문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] strings = {"sun", "bed", "car"};
int n = 1;
// 정렬 기준을 정의하는 Comparator
Comparator comparator = new Comparator() {
@Override
public int compare(String s1, String s2) {
// n번째 문자를 기준으로 비교
char c1 = s1.charAt(n);
char c2 = s2.charAt(n);
if (c1 == c2) {
// n번째 문자가 같으면 전체 문자열로 비교
return s1.compareTo(s2);
}
return Character.compare(c1, c2);
}
};
// 배열 정렬
Arrays.sort(strings, comparator);
// 정렬된 배열 출력
System.out.println(Arrays.toString(strings));
}
}
코드 해석
정렬 로직:
- Arrays.sort 메서드를 사용하여 strings 배열을 정렬합니다.
- 정렬 기준을 정의하기 위해 익명 Comparator<String> 클래스를 구현합니다.
- compare 메서드는 두 문자열 s1과 s2를 비교합니다.
- s1.charAt(n)과 s2.charAt(n)을 통해 문자열의 n번째 문자를 추출합니다.
- c1과 c2가 같으면, s1과 s2를 사전순으로 비교합니다.
- c1과 c2가 다르면, 해당 문자를 비교하여 정렬 순서를 결정합니다.
'(Java)코테연습' 카테고리의 다른 글
두 개 뽑아서 더하기 (0) | 2024.07.19 |
---|---|
k번째수 (0) | 2024.07.18 |
숫자 문자열과 영단어 (0) | 2024.07.16 |
시저암호 (1) | 2024.07.15 |
영어 단어 맞추기 (0) | 2024.07.12 |