728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12915
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드(Java)
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings, (a, b) -> {
// 먼저 n번째 글자를 비교
if (a.charAt(n) != b.charAt(n)) {
return Character.compare(a.charAt(n), b.charAt(n));
}
// 같으면 전체 문자열 비교
return a.compareTo(b);
});
return strings;
}
}
- `Arrays.sort(strings, comparator)` → 배열을 원하는 기준으로 정렬
- `(a, b) -> { ... }` → 두 문자열을 비교하는 기준을 직접 작성
- `a.charAt(n)`과 `b.charAt(n)`을 먼저 비교하고, 같으면 `compareTo`로 전체 문자열을 비교
🧩 Comparator 기본 구조
Comparator<String> comp = new Comparator<String>() {
@Override
public int compare(String a, String b) {
// 비교 규칙 작성
return a.compareTo(b);
}
};
- 반환값 규칙:
- 음수 → a가 b보다 앞에 와야 함
코드(Python)
def solution(strings, n):
# key 매개변수를 사용해 정렬 기준을 바로 지정
return sorted(strings, key=lambda x: (x[n], x))
- `lambda x: (x[n], x)` → 먼저 n번째 글자를 기준으로 정렬하고, 같으면 전체 문자열을 기준으로 정렬