์ซ์ ์ง๊ฟ
๋ ์ ์ X, Y์ ์์์ ์๋ฆฌ์์ ๊ณตํต์ผ๋ก ๋ํ๋๋ ์ ์ k(0 โค k โค 9)๋ค์ ์ด์ฉํ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์๋ฅผ ๋ ์์ ์ง๊ฟ์ด๋ผ ํฉ๋๋ค(๋จ, ๊ณตํต์ผ๋ก ๋ํ๋๋ ์ ์ ์ค ์๋ก ์ง์ง์ ์ ์๋ ์ซ์๋ง ์ฌ์ฉํฉ๋๋ค). X, Y์ ์ง๊ฟ์ด ์กด์ฌํ์ง ์์ผ๋ฉด, ์ง๊ฟ์ -1์ ๋๋ค. X, Y์ ์ง๊ฟ์ด 0์ผ๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ค๋ฉด, ์ง๊ฟ์ 0์ ๋๋ค. ์๋ฅผ ๋ค์ด, X = 3403์ด๊ณ Y = 13203์ด๋ผ๋ฉด, X์ Y์ ์ง๊ฟ์ X์ Y์์ ๊ณตํต์ผ๋ก ๋ํ๋๋ 3, 0, 3์ผ๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์์ธ 330์ ๋๋ค. ๋ค๋ฅธ ์์๋ก X = 5525์ด๊ณ Y = 1255์ด๋ฉด X์ Y์ ์ง๊ฟ์ X์ Y์์ ๊ณตํต์ผ๋ก ๋ํ๋๋ 2, 5, 5๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์์ธ 552์ ๋๋ค(X์๋ 5๊ฐ 3๊ฐ, Y์๋ 5๊ฐ 2๊ฐ ๋ํ๋๋ฏ๋ก ๋จ๋ 5 ํ ๊ฐ๋ ์ง ์ง์ ์ ์์ต๋๋ค.) ๋ ์ ์ X, Y๊ฐ ์ฃผ์ด์ก์ ๋, X, Y์ ์ง๊ฟ์ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์กฐ๊ฑด
* 3 โค X, Y์ ๊ธธ์ด(์๋ฆฟ์) โค 3,000,000์
๋๋ค.
* X, Y๋ 0์ผ๋ก ์์ํ์ง ์์ต๋๋ค.
* X, Y์ ์ง๊ฟ์ ์๋นํ ํฐ ์ ์์ผ ์ ์์ผ๋ฏ๋ก, ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
X | Y | result |
---|---|---|
"100" | "2345" | "-1" |
"100" | "203045" | "0" |
"100" | "123450" | "10" |
"12321" | "42531" | "321" |
"5525" | "1255" | "552" |
๋ฌธ์ ํ์ด
for๋ฌธ์ ํตํด ํด๋น ์ซ์๊ฐ ์ผ๋ง๋ ์๋์ง ํ์ธํด์ ๋ ๋ฎ์๋งํผ ์ ๋ต ๋ฌธ์์ด์ ๋ํ๋ค. return์์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด ๋ฐํํ๋ฉด ์ต๋๊ฐ์ด ๋์จ๋ค.
function solution(X, Y) {
let answer = ''
X = X.split("")
Y = Y.split("")
for(let i = 0 ; i < 10 ; i ++) {
const curX = X.filter(a => Number(a) === i).length
const curY = Y.filter(a => Number(a) === i).length
answer+=String(i).repeat(Math.min(curX, curY))
}
if(answer === '') return "-1"
if(Number(answer) === 0) return "0"
return answer.split("").sort((a,b) => Number(b)-Number(a)).join("")
}
๋ค๋ฅธ ํ์ด ๋ฐฉ์
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('');
}
// want
// X, Y์์ ์ง์ผ๋ก ์ซ์๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ, ํด๋น ๋ฌธ์์ด์ ํตํด ๋ง๋ค ์ ์๋ ์ต๋๊ฐ์ ๋ฐํํ๋ผ
// solving
// 1. X๋ฅผ ์ํํ๋ฉฐ ๊ฐ ์ซ์์ ๊ฐ์ ์ธ์ด ๊ฐ์ฒด or ๋ฐฐ์ด์ ์ ์ฅ
// 2. Y๋ฅผ ์ํํ๋ฉฐ ๊ฐ ๋ฌธ์๊ฐ 1๋ฒ์์ ์ ์ฅํ ๊ฐ์ฒด์ ์ ์ฅํ ๊ฐ์ด 1์ด์์ธ ๊ฒฝ์ฐ, ๊ทธ ๊ฐ์ -1ํ๊ณ result์ ์ถ๊ฐ
// 3. 2๋ฒ์์ ๋ง๋ค์ด์ง ๋ฌธ์์ด์ด ๋น ๋ฌธ์์ด์ด๋ผ๋ฉด -1 ๋ฐํ
// 5. 2๋ฒ์์ ๋ง๋ค์ด์ง ๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ์ ๋ 0์ด๋ผ๋ฉด 0 ๋ฐํ
// 6. ํด๋น ๋ฌธ์์ด์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ ๋ฌธ์์ด ๋ฐํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค Lv.1 : ์ต์์ง์ฌ๊ฐํ (3) | 2022.12.09 |
---|---|
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค Lv.1 : ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ (5) | 2022.12.08 |
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค Lv.1 : ์ฒด์ก๋ณต (2) | 2022.12.05 |
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค Lv.1 : ํฐ์ผ๋ชฌ (1) | 2022.12.05 |
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค Lv.1 : ์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ (1) | 2022.12.05 |
๋๊ธ