
문자 형태의 숫자 정렬 문제
숫자 반복 후 대소 비교 방식 사용해야함!
풀이 이해하는데 참고한 글 ..
[프로그래머스] 가장 큰 수 정렬문제 python (200713)
huidea.tistory.com

문자열에서의 대소비교 : 문자열 첫번째 인덱스를 아스키 숫자로 바꿔 비교하고, 같으면 다음 인덱스를 비교하는 형식으로 숫자 비교와 다르다.
문제 조건에서, 입력되는 숫자의 크기가 최대 1000미만이다.
문자열을 3번 반복하여 길이를 3배 늘린 후에 비교 하는 방식을 사용한다.
import java.util.Arrays;
class Solution {
public String solution(int[] numbers) {
String[] strArr= new String[numbers.length];
for (int i=0; i< numbers.length; i++){
strArr[i] = Integer.toString(numbers[i]);
}
Arrays.sort(strArr, (s1, s2) -> s2.repeat(3).compareTo(s1.repeat(3)));
String answer= String.join("", strArr);
return answer;
}
}

구글링 해보니 numbers[] 값이 {0,0,0} 과 같이 0으로 들어올 경우
answer가 "000" 등으로 출력되어 오류가 발생한다.
import java.util.Arrays;
class Solution {
public String solution(int[] numbers) {
String[] strArr= new String[numbers.length];
for (int i=0; i< numbers.length; i++){
strArr[i] = Integer.toString(numbers[i]);
}
Arrays.sort(strArr, (s1, s2) -> s2.repeat(3).compareTo(s1.repeat(3)));
String answer= String.join("", strArr);
if (answer.charAt(0)=='0'){
answer="0";
}
return answer;
}
}

strArr의 첫번째 원소(answer의 첫번째 인덱스 문자)가 0인경우 answer을 0으로 반환하도록 처리하여 해결하였다.
'PS' 카테고리의 다른 글
| [백준] 2751번 - 수 정렬하기 2 (시간 초과) (1) | 2025.01.12 |
|---|---|
| [백준] 16564 - 히오스 프로그래머 (2) | 2025.01.11 |
| [java/백준] 1764번 듣보잡 (1) | 2024.02.26 |
| [java/백준] 1316번- 그룹 단어 체커 (1) | 2023.08.31 |
| [java/백준] 1094번- 막대기 (1) | 2023.08.25 |