✏️ 문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
✏️ code
📌 Arrays.sort(strings, (s1, s2) -> s1.charAt(n) - s2.charAt(n)): 음수면 s1이 앞으로, 양수면 s2가 앞으로
✅ Arrays.sort가 작동하는 방식
- compare(a, b)가 반환하는 값에 따라 다음과 같이 정렬됩니다.
- a < b = 음수면 a가 앞에 배치됨 / a > b = 양수면 b가 앞에 배치됨 / a == b 0이면 순서 유지됨
📌 compareTo: 사전순 정렬을 위한 문자열 비교
📌 Comparator.comparingInt(String::length): 문자열 길이를 기준으로 정렬
import java.util.Arrays;
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings, (s1, s2) -> {
char c1 = s1.charAt(n);
char c2 = s2.charAt(n);
if (c1 == c2) return s1.compareTo(s2);
else return c1 - c2;
});
return strings;
}
}반응형
'Java > 코딩테스트' 카테고리의 다른 글
| [백준/Bronze I] 디지털 티비 - 2816 (0) | 2025.06.30 |
|---|---|
| [백준/Silver III] 카드 놓기 - 18115 (0) | 2025.06.27 |
| [java/프로그래머스/42748] K번째수 (Arrays.copyOfRange) (0) | 2025.02.27 |
| [java/프로그래머스/134240] 푸드 파이트 대회 (food[i]/2, sb.reverse().toString()) (0) | 2025.02.27 |
| [java/프로그래머스/340199] 지폐 접기 (while (!((bW <= wW && bH <= wH) || (bH <= wW && bW <= wH)))) (1) | 2025.02.26 |