๐๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42746
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๊ฐ์ฅ ํฐ ์
0 ๋๋ ์์ ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์๋ฅผ ์ด์ด ๋ถ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์์๋ด ์ฃผ์ธ์. ์๋ฅผ ๋ค์ด, ์ฃผ์ด์ง ์ ์๊ฐ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋ง๋ค ์ ์๊ณ , ์ด์ค ๊ฐ์ฅ ํฐ
programmers.co.kr
๐๋ฌธ์
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๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ ์ฅํ๋ค, ์ ๋ ฌํ์ฌ ์ฐจ๋ก๋๋ก answer์ ๋ถ์ฌ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค
์ด์ค ๋์ฌ๊ฒจ ๋ด์ผํ ๊ฒ์ Comparator์ด๋ค
Comparator : ๊ฐ์ฒด ๊ฐ์ ํน์ ํ ์ ๋ ฌ์ด ํ์ํ ๋, Comparator ์ธํฐํ์ด์ค๋ฅผ ํ์ฅํด์ ํน์ ๊ธฐ์ค์ ์ ์ํ๋ compare() ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ค.
(์ผ๋ฐ์ ์ธ ์ ๋ ฌ์ด ํ์ํ ์ Comparable ์ฌ์ฉ)
a.compareTo(b)
-์์์๋ถํฐ ๋น๊ตํ๋ค ๋ค๋ฅธ ๋ฌธ์์ด์ด ๋์ค๋ฉด 'a-b' ์์๋ก ํด๋น ๋ฌธ์์ ์์คํค์ฝ๋ ๊ฐ์ ๋บ ๊ฒฐ๊ณผ(int)๋ฅผ ๋ฆฌํด
๋ด๋ฆผ์ฐจ์ : (o2+o1).compareTo(o1+o2);
์ค๋ฆ์ฐจ์ : (o1+o2).compareTo(o1+o2);
arr์ ์ ๋ ฌํ๋ค arr์ ์ฒซ๋ฒ์งธ ๊ฐ์ด 0 ์ธ์ง ์๋์ง (์ฃผ์ด์ง ์๊ฐ ๋ชจ๋ 0์ธ ๊ฒฝ์ฐ) ํ๋ณํ๋ค,
arr์์ ์๋ ๋ฌธ์๋ฅผ ํ๋์ฉ ๊บผ๋ด์ answer์ ๋ถ์ฌ์ฃผ๋ฉด ๋.
๐ป์ฝ๋
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
//1
String[] arr = new String [numbers.length];
for(int i=0; i<numbers.length; ++i){
arr[i]= String.valueOf(numbers[i]);
}
//2
Arrays.sort(arr,new Comparator<String>(){
@Override
public int compare(String s1, String s2){
return ((s2+s1).compareTo(s1+s2)); //๋ String์ ํฉ์ณ์ ํฐ ์ชฝ์ด ์ฐ์ ์์ ์๋๋ก
}
});
//3
if(arr[0].equals("0")){ //0์ผ๋ก ์ด๋ค์ ธ์์๊ฒฝ์ฐ
return "0";
}
for(String a: arr){
answer += a;
}
return answer;
}
}
'Coding Test > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์คํ/ํ Lv.2 / ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2021.05.13 |
---|---|
[JAVA] ํด์ Lv.2 / ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2021.05.04 |
[JAVA] ์์ ํ์ Lv.1 / ๋ชจ์๊ณ ์ฌ (0) | 2021.05.02 |
[JAVA] Heap Lv.1 / ๋ ๋งต๊ฒ (0) | 2021.04.26 |
[JAVA] ์ ๋ ฌ Lv.1 / K๋ฒ์งธ ์ (0) | 2021.04.26 |