문제
코드
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
boolean all_zero = true;
for(int i=0; i<numbers.length; i++)
if(numbers[i] != 0)
all_zero = false;
if(all_zero)
return "0";
PriorityQueue<String> pq2 = new PriorityQueue<>((x,y) -> (y+x).compareTo(x+y));
/* this is wrong~~!! */
// PriorityQueue<String> pq2 = new PriorityQueue<>(
// new Comparator<String>(){
// public int compare(String a, String b){
// String ta = a;
// String tb = b;
// while(ta.length() != tb.length()){
// if(ta.length() < tb.length())
// ta += ta.charAt(ta.length()-1);
// else if(ta.length() > tb.length())
// tb += tb.charAt(tb.length()-1);
// }
// for(int i=0; i<tb.length(); i++){
// if(ta.charAt(i) < tb.charAt(i))
// return 1;
// else if(ta.charAt(i) > tb.charAt(i))
// return -1;
// }
// return 0;
// }
// }
// );
for(int i=0; i<numbers.length; i++)
pq2.add(Integer.toString(numbers[i]));
while(!pq2.isEmpty()){
answer += pq2.poll();
}
return answer;
}
}
피드백
- 답안은 문자열 a,b과 있을때 a+b 와 b+a의 대소를 비교하여 우선순위큐를 사용하는 것이다.
- 내 답안은 아래와 같다.
- a = "123"이고, b = "1234"일때 a의 끝 자릿수를 b의 자릿수까지 맞춰 비교한다.
- 근데 이게 반례가 있다. [40, 403]
- 그래서 내 알고는 틀려먹었다.
- 뇌피셜을 좀 자제하자. 항상 이래서 틀린다.