๋๋ต์ ์ธ ํ์ด๋ 30๋ถ ์ ๋ ๋ง์ ํ๋๋ฐ, ๊ณ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ด๋ค.
11-15๋ BigInt ๊ฐ ๋ถ๋ช ํด!
<ํต๊ณผ ๋ชปํ ์ฝ๋ 1>
function solution(X, Y) {
const Xcount = new Array(10).fill(0);
const Ycount = new Array(10).fill(0);
X.split("").map(v => Xcount[+v]++);
Y.split("").map(v => Ycount[+v]++);
const resultCount = [];
for (let i = 0; i < 10; i++) {
resultCount[i] = Xcount[i] < Ycount[i] ? Array.from({ length: Xcount[i] }, () => i) : Array.from({ length: Ycount[i] }, () => i);
}
const result = resultCount.flat()
if (!result.length) {
return "-1"
} else {
return String(BigInt(result.sort((a, b) => b - a).join("")));
}
}
Array.from ์ ์ด์ฉํด ์๋ฆฌ์๊ฐ ๊ณตํต๋ ๊ฐ์๋งํผ ๋ค์ด์๋ array ๋ฅผ ํด๋น index ์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์๋ฆฌ์กฐ๋ฆฌ ํด๋ดค๋๋ฐ,
์๊ฐ ์ค๋ฅ๊ฐ ๋๋ ๊ฒ์ ๋์ผํ๋ค.
[[0], [1, 1], [0]......[0]] <- ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ง๋ ํ,
result ๋ก 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ค ๋ค [0, 1, 1, 0, 0, ...0]
์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ, Join ์ผ๋ก ํฉ์น ํ Bigint ๋ก ๋ง๋ค๊ณ (์์๋ฆฌ์ 0์ ์ ๊ฑฐํ๊ธฐ ์ํจ & ๋ฒ์๊ฐ bigint ํด๋น)
๊ทธ ๋ค์์ ๋ค์ String ์ผ๋ก ๋ง๋ค์ด์ return ํ๋ ๋ฐฉ์์ด๋ค.
๋ค๋ฅธ๊ฒ๋ณด๋ค ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ง์ด ์ก์๋จน๋ ๊ณณ์ ์ฐพ์์ผํ๋ค.
<ํต๊ณผ ๋ชปํ ์ฝ๋ 2>
function solution(X, Y) {
const Xcount = new Array(10).fill(0);
const Ycount = new Array(10).fill(0);
X.split("").map(v => Xcount[+v]++);
Y.split("").map(v => Ycount[+v]++);
const resultCount = [];
for (let i = 0; i < 10; i++) {
if (!Xcount[i] == 0 && !Ycount[i] == 0) {
const minCount = Math.min(Xcount[i], Ycount[i]);
let string = '';
for (let j = 0; j < minCount; j++) {
string += `${i}`
}
resultCount[i] = string;
}
}
const result = resultCount.reverse().map(BigInt).join("");
return result.length > 0 ? result : "-1";
}
๋ฐฐ์ด๋ก ํ๋ฉด ์ด์จ๋ ์๊ฐ ๋ณต์ก๋๊ฐ ํฌ๊ฒ ๋์ฌ๊ฑฐ๋ ์๊ฐ์ด ๋ค์๊ณ ,
์ด ๋ถ๋ถ์ ๋ณด๊ณ ํํธ๋ฅผ ์ป์๋ค.
๋ถ๋ช string ์ผ๋ก ์ถ๋ ฅํ๋๊ฒ ๋ ๊ฐ๋ณ๊ฒ ์ง!
์ด์ ์ฝ๋์์ [5, 5] ๊ฐ์ ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ๋ ๋์ , ๋ฌธ์์ด๋ก ๋ง๋ค์ด์ฃผ๊ธฐ๋ก ํ๋ค.
for ๋ฌธ์ ์ด์ฉํด string์ '5', '5' ๋ฅผ ๋ถ์ฌ์ ๊ทธ ๊ฐ์ ๋ฃ์ด์คฌ๋๋ฐ, ์ด๊ฒ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค.
๋น์ฐํ๋ค. ์๊ฐ์ ์ค์ฌ์ผ ํ๋๋ฐ for ๋ฌธ์ ์ค์ฒฉ์์ผฐ์ผ๋ O(n²) ๊ฐ ๋์ฌ๊ฒ ๋ถ๋ช ํจ!!
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํฉ์ณ์ผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฒ ์ฐ์ง ์์๊น?
<ํต๊ณผํ ์ฝ๋>
function solution(X, Y) {
const Xcount = new Array(10).fill(0);
const Ycount = new Array(10).fill(0);
X.split("").map(v => Xcount[+v]++);
Y.split("").map(v => Ycount[+v]++);
let str = '';
for (let i = 9; i >= 0; i--) {
const minCount = Math.min(Xcount[i], Ycount[i]);
str += Array.from({ length: minCount }, () => i).join("");
}
if (!str.length) {
return "-1"
} else if (Number(str) == 0) {
return '0';
} else {
return str
}
}
array๋ก ๋ง๋ค์ง ๋ง๊ณ ๋ฐ๋ก string ์ผ๋ก ๋ง๋ค์!
๊ทธ๋ฆฌ๊ณ for ๋ฌธ์ ์์๋ฅผ ๋ฐ๊ฟจ๋ค.
๋ฐฐ์ด์ sort ๋ฅผ ํ ์ ์์ง๋ง, string์ ๊ทธ๋ฐ ๊ณ ์ฐจํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์ (๊ทธ๋ฆฌ๊ณ ํ ๋ฉ์ด๋ฆฌ๋ผ ์๋จ)
ํฐ ์ ๋จผ์ string ์ ๋ถ์ฌ์คฌ๋ค.
์ด์ ์๋ 0, 1, 1, 4, 4 ์์๋ก ๋ฐฐ์ด์ ๋ค์ด๊ฐ๋ค๋ฉด,
์ง๊ธ์ 4, 4, 1, 1, 0, 0 ์์ผ๋ก ๋ถ๋๋ค.
์์ฑ๋ str์ length ๊ฐ 0 ์ด๋ผ๋ฉด => ์ผ์นํ๋ ์ง๊ถ ์ซ์๊ฐ ํ๋๋ ์๋ ๊ฒ. "-1"์ ๋ฆฌํด
str์ ์ซ์๋ก ๋ฐ๊ฟจ์ ๋ 0์ด ๋์จ๋ค๋ฉด? => "000000" "00" ์ด๋ฐ ํํ์ด๊ธฐ ๋๋ฌธ์ 0์ด๋ค. "0" ์ ๋ฆฌํด
๋๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด "124" "2450" ๋ฑ ์ฒ๋ผ ์ ํจํ ์๋ฆฌ๊ฐ์ ๊ฐ์ง๋ ์ซ์์. str ์ ๋ฐ๋ก return ํด์ค๋ค.
์๊ฐ์ ์ข ๊ฑธ๋ ธ์ง๋ง ์ค์ค๋ก ํ์ด๋ด์ ๋ ์์ ์นญ์ฐฌํด!
<๋ค๋ฅธ ์ฌ๋์ ์ฝ๋> char ๋ฅผ ์ด์ฉ
function solution(X, Y) {
let result = '';
const numObj = {};
for (const char of X) {
numObj[char] = (numObj[char] || 0) + 1;
}
for (const char of Y) {
if (!numObj[char]) continue;
result += char;
numObj[char]--;
}
if (result === '') return '-1';
if (+result === 0) return '0';
return [...result]
.map((num) => +num)
.sort((a, b) => b - a)
.join('');
}
'ํ์ ๊ณต๋ถ > ๐ซง ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ฒด์ก๋ณต (0) | 2023.07.14 |
---|---|
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์น์์ด(2) (0) | 2023.07.13 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ๋คํธ ๊ฒ์ (0) | 2023.07.06 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ๋ง์น ํ๊ธฐ (0) | 2023.07.04 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (0) | 2023.06.30 |