[프로그래머스] 문자열 내 마음대로 정렬하기

2020. 6. 21. 18:49프로그래머스/LEVEL 1

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];

        for(int i=0; i<strings.length; i++){
            strings[i] = Character.toString(strings[i].charAt(n))+strings[i];
        }
        
        Arrays.sort(strings);
        
        for (int i=0; i<answer.length; i++){
            answer[i] = strings[i].substring(1);
        }
        
        return answer;
    }
}

1. n번째 인덱스를 기준으로 오름차순 정렬할 것이기 때문에, 해당 문자를 기존의 문자열 맨 앞에 붙이고 정렬하면 된다.

2. 이후 맨 앞글자를 제외한 나머지를 answer로 옮기면 된다.

 

Comparator 재정의 풀이

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];
       
        Arrays.sort(strings, new Comparator<String>(){
            
            public int compare(String s1, String s2){
                if(s1.charAt(n)==s2.charAt(n)){
                    return s1.compareTo(s2);
                }else{
                    return s1.charAt(n)-s2.charAt(n);
                }
            }
        });
        
        for(int i=0; i<answer.length; i++){
            answer[i] = strings[i];
        }
        
        
        return answer;
    }
}

1. 정렬 기준을 두번째 인덱스의 대소관계를 통해 하도록 Comparator를 재정의 하여 정렬할 수 있다.