알고리즘/프로그래머스

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

정석이 2022. 2. 19. 21:29

 

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

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱

programmers.co.kr

 

 

 

 

문제

 

 

 


 

 

정렬을 해야하니까...

 

 

n번째 인덱스를 맨 앞에 놓고 원래 문자를 붙인걸 저장한 arrayList를 sort 하고

 

 

 

substring으로 1부터로 저장하면됨....

 

 

 

(Collections.sort() 시 사전순 sort되므로 조건을 더이상 구현하지 않아도 됨)

 

 

 

 

코드

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer;
        
        ArrayList<String> arrayList = new ArrayList<>();
        for(int i = 0; i < strings.length; i++)
            arrayList.add(strings[i].charAt(n) + strings[i]);
        
        Collections.sort(arrayList);
        
        answer = new String[arrayList.size()];
        
        for(int i = 0; i < arrayList.size(); i++)
            answer[i] = arrayList.get(i).substring(1);
        
        return answer;
    }
}

 

 

 

 

원래 compareTo를 사용해야하나 했는데 두개씩 비교하는건 에바같아서...

 

 

 

s1.compareTo(s2) 를 했을 때 s1>s2이면 양수, 반대면 음수, 0이면 같은 문자인 것이다.

 

 

 

 

 


 

다른 사람 코드

 

 

 

 

 

 

comparator 사용함.

 

 

이것도 좋네요