-
[프로그래머스] 문자열 내 마음대로 정렬하기 자바 list.sort Comparator코딩테스트 2025. 4. 8. 09:40반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12915
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
문자열로 구성된 배열에서 주어진 인덱스 n을 기준으로 각 단어별로 n번째 글자를 기준으로 오름차순으로 정렬하여 반환하시오.
제한사항
인덱스 n의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
접근
list의 sort(Comparator.comparing) 을 활용해 특정 인덱스를 기준으로 정렬하게끔 작성하였다.
public String[] solution(String[] strings, int n) { List<String> list = new ArrayList<>(Arrays.asList(strings)); list.sort(Comparator.comparing(a -> a.charAt(n))); return (new String[0]); }
발견된 문제
제한사항을 준수하지 못함.
-> Comparator 체이닝을 활용할 수 있다고 한다. 이를 적용하면 아래와 같다.public String[] solution2(String[] strings, int n) { List<String> list = new ArrayList<>(Arrays.asList(strings)); list.sort(Comparator .comparing((String a) -> a.charAt(n)) // 1. n번째 문자 기준 정렬 .thenComparing(Comparator.naturalOrder()) // 2. 사전순 정렬 (동률 시) ); return list.toArray(new String[0]); }
알게된 점
1. 특정 문자열을 기준으로 정렬하기 (List)
list.sort(Comparator.comparing( (String a) -> a.charAt( idx ) ) )
1.1 정렬 후 재정렬 (ex 사전순 정렬)
list.sort(Comparator.comparing( (String a) -> a.charAt( idx ) )
.thenComparing(Comparator.naturalOrder()
);반응형'코딩테스트' 카테고리의 다른 글
[프로그래머스] 폰켓몬 자바 Set (0) 2025.04.08 [프로그래머스] 2016년 자바 요일구하기 LocalDate getDayOfWeek (0) 2025.04.08 [프로그래머스] 소수 찾기 자바 에라스토테네스의 체 (0) 2025.04.07 [프로그래머스] 시저암호 자바 (0) 2025.04.07 [프로그래머스] 이상한 문자 만들기 자바 toUpper / toLowerCase (0) 2025.04.07