프로그래머스 가장 큰 수 자바
2023. 5. 13. 19:52ㆍ코딩테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 문제는 int의 배열로 입력 받고 이어 붙여서 가장 큰 수를 String으로 반환해야 하는 문제다.
1. 입력 받은 int 배열을 String 배열로 변환해준다.
2. Arrays.sort를 활용하여 내림차순으로 정렬해준다.
3. 정렬된 배열을 String으로 붙여준다.
여기서 주의해야 할점은
1. Arrays.sort를 내림차순을 할 때
o1.compareto(o2) 이런식으로 하면 안되고 (o2 + o1).compareto(o2 + o1)으로 해줘야 된다는 것이다.
2. 입력받은 int의 배열이 0으로만 2개 이상 구성되어 있는경우
예를 들어 {0, 0}으로 입력받았다면 String으로 이어붙힌다면 00으로 나오므로 0으로 나오게 해야하기 때문에 조건문으로 처리를 해줘야 한다.
문자열을 이어붙힐 때는 + 연산보다는 StringBuilder를 사용해주도록 하자
import java.util.Arrays;
import java.util.Comparator;
public class Solution42746 {
public String solution(int[] numbers) {
int size = numbers.length;
String[] sNumbers = new String[size];
for (int i = 0; i < size; i++) {
sNumbers[i] = String.valueOf(numbers[i]);
}
Arrays.sort(sNumbers, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2+o1).compareTo(o1+o2);
}
});
// 예를 들어 0, 0 이런식으로 나오면 00이렇게 나오는 것을 방지하기 위해
if (sNumbers[0].equals("0")) return "0";
StringBuilder answer = new StringBuilder();
for (int i = 0; i < size; i++) {
answer.append(sNumbers[i]);
}
return answer.toString();
}
public static void main(String[] args) {
int[] numbers = {6, 10, 2};
Solution42746 solution42746 = new Solution42746();
String result = solution42746.solution(numbers);
System.out.println(result);
}
}'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 k번째 수 자바 (0) | 2023.05.13 |
|---|---|
| 프로그래머스 소수 찾기 자바 (0) | 2023.05.08 |
| 프로그래머스 카펫 자바 (0) | 2023.05.07 |
| 프로그래머스 모의고사 자바 (0) | 2023.05.07 |
| 프로그래머스 최소직사각형 자바 (0) | 2023.05.07 |