https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java
๋ฌธ์ ์ค๋ช
0 ๋๋ ์์ ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์๋ฅผ ์ด์ด ๋ถ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์์๋ด ์ฃผ์ธ์.
์๋ฅผ ๋ค์ด, ์ฃผ์ด์ง ์ ์๊ฐ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋ง๋ค ์ ์๊ณ , ์ด์ค ๊ฐ์ฅ ํฐ ์๋ 6210์
๋๋ค.
0 ๋๋ ์์ ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์๋ฅผ ์ฌ๋ฐฐ์นํ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- numbers์ ๊ธธ์ด๋ 1 ์ด์ 100,000 ์ดํ์ ๋๋ค.
- numbers์ ์์๋ 0 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- ์ ๋ต์ด ๋๋ฌด ํด ์ ์์ผ๋ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด return ํฉ๋๋ค.์
์ถ๋ ฅ ์
numbers return [6, 10, 2] "6210" [3, 30, 34, 5, 9] "9534330"
์ ๊ทผ
๋จ์ ์ ๋ ฌ๋ก ์ ๊ทผํ๋ ค๊ณ ํ์ง๋ง, ๋ฐ๋ก ๊ฑธ๋ฆผ๋๋ก ๋๊ปด์ง ๋ถ๋ถ์ 3
๊ณผ 34
๋น๊ต์ 5
์ 53
๋น๊ต์๋ค. ๋จ์ํ ์๋ฐ์ ์ ๋ ฌ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ์๋ ์๋ฆฟ์๊ฐ ๋ค๋ฅธ ๋ ๋ฌธ์์ด์ ์ด๋ป๊ฒ ๋น๊ต์ํค๋๊ฐ ๊ฐ์ด ์์กํ๋ค.
๊ทธ๋ ๋ค๊ณ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋น๊ตํ์๋, ์ต๋ 1000๊ฐ ์์์ ์์ด์ 1000!์ด๋ฏ๋ก ๋ถ๊ฐ๋ฅํ๋ค. ์ฌ๊ธฐ์๋ถํฐ ๊ผฌ์ธ ๊ฒ ๊ฐ๋ค. ๊ฒฝ์ฐ์ ์๋ฅผ ๋น๊ตํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ์๊ฐ ๋๋ฌธ์ ์ปค์คํ
์ ๋ ฌ์ ๊ธฐ์ค์ ๋ง๋ จํ๊ธฐ ์ํ ํจํด ์ฐพ๊ธฐ์๋ง ๋น ์ ธ์ ๋ฌธ์ ๋ฅผ ํ์ง ๋ชปํ๋ค.
ํด๋ต
ํด๋ต์ ๊ฐ๋จํ์ง๋ง ๋ ์ฌ๋ฆฌ๊ธฐ ํ๋ ๋ฐฉ์์ด์๋ค. ๊ฒฐ๊ตญ ๊ฐ ์ซ์๋ค์ ์ฐจ๋ก๋ก ์ด์ด ๋ถ์ธ ํ ๋ ํฐ ์ซ์๋ฅผ ๋ง๋ค๋ฉด ๋๋ฏ๋ก, ์ด๋ค ์ซ์๊ฐ ์์ ์ฌ ๋ ์ฌ์ ์ ์ผ๋ก ๋ ํฐ์ง๋ฅผ ๋น๊ตํ๋ฉด ๋๋ค.
๋จ์ํ ๋น๊ต๊ฐ ์ด๋ ค์ด (3
VS 34
/ 5
VS 53
/ a VS b) ์ ๊ฒฝ์ฐ, ab VS ba ์ค์ ์ฌ์ ์ ์ผ๋ก ๋ ํฐ์ง๋ฅผ ๋น๊ตํ๋ฉด ๋๋ค.
(ex. 334
< 343
, 553
> ``535)
์์ค์ฝ๋
public String solution(int[] numbers) {
String answer = "";
String[] strings = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
strings[i] = String.valueOf(numbers[i]);
}
Arrays.sort(strings, (s1, s2) -> (s2 + s1).compareTo(s1 + s2));
if (strings[0].startsWith("0")) return "0";
for (String s : strings) {
answer += s;
}
return answer;
}