728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
PriorityQueue를 사용해서 우선순위를 적용해줬다.
우선, numbers의 개수가 최대 100,000개 이고
numbers의 원소는 최대 1000이기 때문에 숫자를 활용해서 이 문제를 해결할 수 없다.
문자열을 활용해서 비교를 해주고, 정답을 출력해줘야 한다.
사전순으로 3 과 30을 나열하면 3이 30보다 더 뒤에 출력된다.
그래서 비교해줘야 하는 문장의 길이가 다를 때에는 둘을 붙였을 때 더 사전순으로 뒤에 있는 경우로 pq에 넣어줘야한다.
그리고 반례가 있는데,
입력: [0, 0, 0]
출력: 0
// 오답 주의 000
만약 0만 들어있을 경우 출력은 000이 아니라 0이어야 한다.
해당 사항이 테케 11번인 것 같다.
전체코드
import java.io.*;
import java.util.*;
class Solution {
static PriorityQueue<String> pq = new PriorityQueue<>(new Comparator<>(){
public int compare(String o1, String o2){
if(o1.length() == o2.length()){
return o2.compareTo(o1);
//o1과 o2의 길이가 다를 때
}else{
String tmp1 = o1+o2;
String tmp2 = o2+o1;
return tmp2.compareTo(tmp1);
}
}
});
public String solution(int[] numbers) {
String[] check = new String[numbers.length];
for(int i=0; i<numbers.length; i++){
pq.offer(numbers[i]+"");
}
String answer = "";
while(!pq.isEmpty()){
answer += pq.poll();
}
if(answer.charAt(0) == '0'){
answer = answer.replace("0","");
}
if(answer.length() == 0){
answer = "0";
}
return answer;
}
}
728x90
'코테 > Algorithm' 카테고리의 다른 글
[Programmers] 멀리뛰기 (JAVA) (0) | 2024.07.08 |
---|---|
[Programmers] [1차] 뉴스 클러스터링 (JAVA) (0) | 2024.07.08 |
[Programmers] 스킬트리 (JAVA) (1) | 2024.07.04 |
[Programmers] 주식 가격 (JAVA) (0) | 2024.07.03 |
[Programmers] [3차] 압축 (JAVA) (0) | 2024.06.25 |