[JAVA/프로그래머스] 연습문제: 문자열 내 마음대로 정렬하기

👀 문제

https://programmers.co.kr/learn/courses/30/lessons/12915

👊 도전

1. 설계

  1. Arrays.sort로 일단 오름차순 정렬한다.
  2. n번째 인덱스 값에 따른 정렬을 Comparator로 이용해 구현한다.

2. 구현 (성공 코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
/**
 *
 * @author HEESOO
 *
 */
class Solution {
  public String[] solution(String[] strings, int n) {
      String[] answer = {};
      Arrays.sort(strings);
      Arrays.sort(strings, new Comparator<String>(){
          @Override
          public int compare(String s1, String s2){
              return s1.charAt(n)-s2.charAt(n);
          }
      });
      System.out.println(Arrays.toString(strings));
      return strings;
  }
}
 

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. 처음 오름차순 정렬을 한다.
    • 입출력 예2에서 2번째 인덱스 값으로 정렬한다고 했을 때, abce와 abcd의 두번째 인덱스는 c로 같으므로, 이 경우 사전순으로 정렬해야한다. 따라서 이 경우를 대비해 n번째 인덱스에 따른 정렬을 하기 전 오름차순으로 정렬해둔다.
  2. Comparator을 이용해 인덱스 값에 따른 정렬을 구현한다.
    • s1과 s2의 n번째 인덱스를 charAt으로 추출한 후, 오름차순 정렬이므로 s1-s2이다.

👏 해결 완료!

어유 코테가 이런식의 난이도라면 얼마나 좋아