본문 바로가기

알고리즘/Programmers

[Programmers] Level1. 문자열 내마음대로 정렬하기 (Java)

Level1. 문자열 내마음대로 정렬하기

문제설명 )

 

 

풀이Code )

import java.util.ArrayList;
import java.util.Collections;

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

        ArrayList<String> list = new ArrayList<>(); // 정렬을 편하게 하기 위해 list 선언

        for (int i=0; i<strings.length; i++) { // 문자열에서 n번째 값을 함께 list에 담는다
            list.add(strings[i].charAt(n) + strings[i]);
        }

        Collections.sort(list); // 담은 list를 정렬하면 자연스레 문자열의 n번째 문자로 정렬되어 담긴다.

        for (int i=0; i<list.size(); i++) {
            answer[i] = list.get(i).substring(1); // list에 같이 담았던 n번째 문자를 자르고 나머지 문자열을 answer에 담는다.
        }

        return answer;
    }
}

 

 

풀이법 )

  1. list를 생성하여 문자열을 list에 담을때 주어진 n번째 문자를 함께 담아준다.
  2. n번째 문자를 함께 담았기 때문에 list를 sort했을땐 자연스레 n번째 문자를 기준으로 담기게 된다.
  3. 담긴 문자열을 substring을 사용하여 담았던 n번째 문자를 잘라준다.
  4. 잘라준 문자열을 그대로 answer에 담고 리턴 하면 정답이 된다.