IT/알고리즘

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

어센트 2020. 5. 30. 18:42

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

 

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

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

programmers.co.kr

 

처음에 입력받은 문자열 배열을 먼저 정렬한 후 인덱스별로 정렬하려는 멍청한 생각을 했다..

결국 문제를 해결하긴 했는데 Comparator를 이용한 방법과 각 문자의 n번째 인덱스를 각 문자열 처음에 추가하여 정렬 메소드를 사용하여 푸는 2가지 방식으로 문제를 해결했다.

 

 

Comparator 사용 방법


import java.util.*;

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

 

 

2번째 방법

 

package lv1;

import java.util.*;
class 문자열_내마음대로_정렬하기
{
    public static String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];
        for(int i=0;i<answer.length;i++)
        {
            answer[i]= Character.toString(strings[i].charAt(n)) +strings[i];
        }
        Arrays.sort(answer);
        for (int i = 0; i < answer.length; i++) {
            answer[i] = answer[i].substring(1);
        }

        return answer;

    }
}