목차
- 문제
- 내가 푼 방법
- 자바 코드
- 결과 및 회고
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42746#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 내가 푼 방법
입력 값인 numbers를 리스트에 문자열 형태로 다시 담아서 정렬했다.
그 후에 Collections.sort를 사용했고, new Comparator를 사용해서 compare 함수를 오버라이딩했다.
두 문자열을 합친 sb1과 sb2를 비교할 때, 더 큰 값이 리턴되도록 해서 깔끔하게 작성한 것 같다.
3. 자바 코드
깃허브 풀이 주소
https://github.com/geujeog/Programmers/blob/main/Solution_%EA%B0%80%EC%9E%A5%ED%81%B0%EC%88%98.java
import java.util.*;
class Solution {
public String solution(int[] numbers) {
List<String> list = new ArrayList<>();
for (int num : numbers) {
list.add(String.valueOf(num));
}
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String s1, String s2) {
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
sb1.append(s1).append(s2);
sb2.append(s2).append(s1);
return sb2.toString().compareTo(sb1.toString());
}
});
if (list.get(0).equals("0")) return "0";
StringBuilder sb = new StringBuilder();
for (String num : list) {
sb.append(num);
}
return sb.toString();
}
}
4. 결과 및 회고
여러 문제를 풀어오면서 정렬할 때 new Comparator를 사용하는 방식은 확실하게 익혀진 것 같다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 기지국 설치 (0) | 2023.05.10 |
---|---|
[JAVA] 프로그래머스 - 소수 찾기 (0) | 2023.05.09 |
[JAVA] 프로그래머스 - 숫자 변환하기 (0) | 2023.05.09 |
[Python] 영어 끝말잇기 (0) | 2022.09.26 |
[Python, JAVA] 프로그래머스 - 다음 큰 숫자 (0) | 2022.09.26 |
댓글