카테고리 없음

[프로그래머스] 문자열 내 마음대로 정렬하기 (Java, Python)

garamdev 2026. 9. 5.
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번째 글자를 기준으로 정렬하고, 같으면 전체 문자열을 기준으로 정렬