하루에 한 문제
[프로그래머스] 가장 큰 수 -Java 본문
https://programmers.co.kr/learn/courses/30/lessons/42746?language=java
import java.util.PriorityQueue;
class Solution {
public String solution(int[] numbers) {
String answer = "";
PriorityQueue<String > pq = new PriorityQueue<>((o1,o2) -> ((o2+o1).compareTo(o1+o2)));
int size=numbers.length;
int zeroCnt=0;
for(int i=0; i<numbers.length; i++) {
pq.add(Integer.toString(numbers[i]));
if(numbers[i]==0) zeroCnt++;
}
if(zeroCnt==size) return "0";
size=pq.size();
for(int i=0; i<size; i++ )
answer+=pq.poll();
return answer;
}
}
소요시간 : 25분
우선 정렬을 어떤 식으로 할지 고민을 많이 했습니다.
만약 입력이 30, 3 이라면 303, 330 중 330이 나와야 합니다!
처음에는 정렬을 new PriorityQueue<>((o1,o2) -> ((o2).compareTo(o1))); 로 해서 303이라는 값이 나왔습니다
위의 사항을 해결하기 위해 new PriorityQueue<>((o1,o2) -> ((o2+o1).compareTo(o1+o2))); 즉 두 개를 더해서 더 큰 것을 반환하는 pq로 바꾸었습니다!
그리고 이런 식으로 넣은 pq를 answer에 더해주기만 하면 답이 나옵니다!
아 그리고 이렇게 해서 바로 제출했더니 가장 마지막 테케가 실패라고 떠서 예외사항을 생각해 보니
numbers의 모든 값이 0일 때를 처리 안 해주어서 이 부분을 처리하고 제출했습니다!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] H-Index -Java (0) | 2020.12.16 |
---|---|
[프로그래머스] 가장 큰 정사각형 찾기 -Java (0) | 2020.12.16 |
[프로그래머스 2020 KAKAO BLIND RECRUITMENT] 괄호 변환 -Java (0) | 2020.12.14 |
[프로그래머스 2020 KAKAO BLIND RECRUITMENT] 자물쇠와 열쇠 -Java (1) | 2020.12.14 |
[프로그래머스 2020 KAKAO BLIND RECRUITMENT] 베스트앨범 -Java (5) | 2020.12.13 |
Comments