공부기록

가장 큰 수 본문

코테/프로그래머스

가장 큰 수

코타쿠 2021. 8. 21. 13:24

문제

코드

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]
    • 그래서 내 알고는 틀려먹었다.
    • 뇌피셜을 좀 자제하자. 항상 이래서 틀린다.

'코테 > 프로그래머스' 카테고리의 다른 글

큰 수 만들기  (0) 2021.08.29
조이스틱  (0) 2021.08.26
퍼즐 조각 채우기 (위클리 챌린지 3주차)  (0) 2021.08.17
디스크 컨트롤러  (0) 2021.05.20
후보키  (0) 2021.05.05