ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ์ค๋ช
0 ๋๋ ์์ ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์๋ฅผ ์ด์ด ๋ถ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์์๋ด ์ฃผ์ธ์.
์๋ฅผ ๋ค์ด, ์ฃผ์ด์ง ์ ์๊ฐ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋ง๋ค ์ ์๊ณ , ์ด์ค ๊ฐ์ฅ ํฐ ์๋ 6210์ ๋๋ค.
0 ๋๋ ์์ ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์๋ฅผ ์ฌ๋ฐฐ์นํ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ- numbers์ ๊ธธ์ด๋ 1 ์ด์ 100,000 ์ดํ์ ๋๋ค.
- numbers์ ์์๋ 0 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- ์ ๋ต์ด ๋๋ฌด ํด ์ ์์ผ๋ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด return ํฉ๋๋ค.
[6, 10, 2] | "6210" |
[3, 30, 34, 5, 9] | "9534330" |
์ฝ๋
function solution(numbers) {
var answer = "";
let max = Number.MIN_SAFE_INTEGER;
let n = numbers.length;
let ch = Array.from({ length: n }, () => 0);
let tmp = [];
function DFS(L) {
if (L === n) {
max = Math.max(max, Number(tmp.join('')));
return;
} else {
for (let i = 0; i < n; i++) {
if (ch[i] === 0) {
ch[i] = 1;
tmp.push(numbers[i]);
DFS(L + 1);
tmp.pop(numbers[i]);
ch[i] = 0;
}
}
}
}
DFS(0);
answer = String(max);
return answer;
}
์ค๋ต
์์ ํ ์คํธ ์ผ์ด์ค๋ ๋ค ๋ง์์ง๋ง ์ค์ ํ ์คํธ๋ฅผ ๋๋ ธ์ ๊ฒฝ์ฐ ์๊ฐ ์ด๊ณผ๋ก ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค.์ด์ ํด๋น ๊ฐ๋ค์ ๋ฌธ์๋ก ์นํํด ์ค ๋ค์ + ์ฐ๊ฒฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฅํ ๋ชจ๋ ๋ ์กฐํฉ์ ๋ง๋ค๊ณ sort() ๋ฉ์๋ ๋ด์์ ํด๋น ๊ฐ๋ค์ ๋น๊ตํ์ฌ ๋ด๋ฆผ์ฐจ์ํด์ฃผ์๋ค.
์ฝ๋
function solution(numbers) {
const answer = numbers.map((number) => number.toString()).sort((a, b) => (b+a) - (a+b)).join("")
return answer.replace(/^0+/, "0"); // 1๊ฐ ์ด์์ ์๋ฏธ ์๋ 0์ ํ๋๋ก ์ค์๋ค.
}
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ค์ ํฐ ์ซ์_toString()์ผ๋ก ์ง์ ํํ (0) | 2021.10.21 |
---|---|
[์์ ํ์]์นดํซ (0) | 2021.10.10 |
[์๋ผํ ์คํ ๋ค์ค์ ์ฒด]์์์ฐพ๊ธฐ (0) | 2021.10.09 |
[๊ทธ๋ฆฌ๋]๊ตฌ๋ช ๋ณดํธ (0) | 2021.09.04 |
[์ ํด๋ฆฌ๋ ํธ์ ๋ฒ]์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2021.09.03 |