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"
์ฒ์์๋ ์๋ฆฟ ์ ๋น๊ต๋ฅผ ํตํด์ ํฐ ์๋ฅผ ๋น๊ตํ๋ ค๊ณ ํ์ผ๋, ๋๋ฌด ๋ง์ ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์ ์์ฑํด์ผ ํ์ผ๋ฏ๋ก ๊ทธ ๋ฐฉ๋ฒ์ ํ๊ธฐ์ฒ๋ถ๋๋ค.
๋ฌธ์ ๋ ํฐ์๊ฐ ์์ผ๋ก ์ค๋๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ํ๋ฉด ๋๋๋ฐ [0, 0, 0]๊ณผ ๊ฐ์ ํ ์คํธ์ผ์ด์ค๋ ์ถ๋ ฅ์ด "000"์ด๋ฏ๋ก ๋งจ ์์ 0์ด ๋์ค๋ฉด 0์ ๋ฐํํ๊ฒ๋๋ง ์ฒ๋ฆฌ ํด์ค์ผ ํ๋ค.
๊ทผ๋ฐ ์, ๋ค ์ซ์๋ฅผ ๋ถ์ฌ๋ณด๊ณ ๋ ํฐ ์๋ฅผ ์์ ๋์ผ ํ๋ ๋ก์ง์ ์ง๋๊ฒ ์ด๋ ค์ ๋ค. ์ผ๋จ ์ฃผ์ด์ง numbers๋ฐฐ์ด์ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ๋ฐ๊ฟจ๋ค. ์ดํ, comparator๋ฅผ ํ์ฉํด ์ ๋ ฌ๋ก์ง์ ๋ง๋ค์ด์ ํ์๋ค.
String a + String b ์ String b + String a๋ฅผ ๋น๊ตํด b + a๊ฐ ํฌ๋ฉด a์ b์์น๋ฅผ ๋ฐ๊ฟ์ฃผ๋ compareํจ์ ์ค๋ฒ๋ผ์ด๋ฉ์ ํ๋ฉด ๋๋ค.
์) 3, 34 ์ด๋ฉด, 334, 343์ด ๋์ค๋๋ฐ 343์ด ๋ ํฌ๋ 34์ 3์ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] str = new String[numbers.length];
for(int i = 0 ; i < numbers.length ; i++){
str[i] = String.valueOf(numbers[i]);
}
//๋ฌธ์์ด๋ก ๋ฐ๊ฟ์ค ๋ค ํฌ๊ธฐ ๋น๊ต๋ฅผ ํด์ผํจ.
Arrays.sort(str, new Comparator<String>(){
@Override
public int compare(String a, String b){
return ((b+a).compareTo(a+b));
}
});
//comparator๋ฅผ ์ต๋ช
ํด๋์ค๋ก ๊ตฌํ
//compare๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ compare๋ ๋งค๊ฐ๋ณ์(object)๋ ๊ฐ(์, ๋ค)๋ฅผ
//๋น๊ตํด์ ์์ผ๋ฉด ์์ ์ ์, ๊ฐ์ผ๋ฉด 0 ํฌ๋ฉด ์์ ์ ์์ ๋ฐํํ๋ค.
//๋ฌธ์์ด ํฌ๊ธฐ๋น๊ต ๋ฉ์๋ compareTo๋ฅผ ํ์ฉํด b+a๊ฐ a+b๋ณด๋ค ํฌ๋ฉด ์์, ์์ผ๋ฉด ์์ ๊ฐ์ผ๋ฉด 0 ๋ฐํํ๋ค.
//๊ฒฐ๊ตญ Arrays.sort(๋ฐฐ์ด, ์กฐ๊ฑด)์์ ์กฐ๊ฑด(Comparator)์ด ์์์ ์๋ฅผ ๋ฐํํ๋ฉด ์ค๋ฆ์ฐจ์
//์์ ์ ์๋ฉด ๋ด๋ฆผ์ฐจ์ ๋๋ค.
if(str[0].equals("0")){
return "0";
}
String answer = "";
for(int k = 0 ; k < numbers.length ; k++){
answer += str[k];
}
return answer;
}
}