Coding Test/프로그래머스

[200508] 문자열 내 마음대로 정렬하기 - 연습문제(level1)

csmoon1010 2020. 5. 9. 10:31

1. 문제이해

- 문자열의 n번째 글자를 기준으로 오름차순 정렬

- 단, 같은 n번째 글자라면 사전순 정렬

 

2. 전략

- Comparator을 이용한 Arrays.sort

- n번째 글자 : a.substring(n, n+1)

- 글자가 같다면 a와 b를 비교한 결과를, 아니라면 글자를 비교한 결과를 return

 

3. 참고사항

- String 클래스의 compareTo : 스트링을 비교한 결과로 같으면 0, 앞이 더 먼저오면 음수, 뒤에 오면 양수를 출력

- Comparator : public int compare(String a, String b)안에 먼저 오면 -1, 뒤에 오면 +1 return하도록 구현하면 됨!!(오름차순)

- 다른 방식 : n번째 char와 나머지 string을 뒤에 붙인 문자로 재구성 후 Collections.sort

 

4. 코드

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = {};
        Arrays.sort(strings, new Comparator<String>(){
            public int compare(String a, String b){
                if(a.substring(n, n+1).compareTo(b.substring(n, n+1)) == 0){
                    return a.compareTo(b);
                }
                else    return a.substring(n, n+1).compareTo(b.substring(n, n+1));
            }
        });
        answer = strings;
        return answer;
    }
}