-
level1 - 문자열 내 마음대로 정렬하기자료구조와 알고리즘/프로그래머스 문제풀이 2020. 7. 16. 15:03
문제에 대한 설명은 아래 링크에서 볼 수 있다.
[기본 설명]
문자열로 구성된 배열을 각 문자열의 특정 인덱스를 기준으로 오름차순 정렬을 구현하는 문제이다.
(단, 두 문자열의 인덱스가 같을 경우 사전 순으로 정렬)
[개선 사항]
1. 파라미터인 strings를 Arrays.sort() 메소드를 이용해 정렬하고 정렬된 파라미터를 반환하는 것으로 구현
=> 파라미터를 정렬한다면 String 배열을 반환할 필요가 없으므로, Stream을 통해 새로 배열을 만들어 반환하는 것으로 변경.
2. Comparator를 익명클래스로 stream 내부에서 구현
=> Comparator를 구현한 클래스를 만들어서 비교 로직과 배열 생성 로직을 분리하였음.
import java.util.Arrays; import java.util.Comparator; public class 문자열_내_마음대로_정렬하기 { public String[] customSort(String[] strings, int n) { return Arrays.stream(strings) .sorted(new CustomComparator(n)) .toArray(String[]::new); } private class CustomComparator implements Comparator<String> { int index; CustomComparator(int index) {this.index = index;} @Override public int compare(String str1, String str2) { if (str1.charAt(index) > str2.charAt(index)) { return 1; } else if (str1.charAt(index) == str2.charAt(index) { // 두 문자열의 인덱스에 해당하는 character 값이 같다면, 사전식 비교값 반환 return str1.compareTo(str2); } return -1; } } }
'자료구조와 알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
level 2 - N개의 최소공배수 (0) 2023.02.22 level 1 - 문자열 다루기 기본 (0) 2020.07.20 level 1 - 체육복 (0) 2020.07.15 level 1 - 완주하지 못한 선수 (0) 2020.07.10