[코테/JAVA] 연습문제 : 문자열 내 마음대로 정렬하기

    728x90
    반응형

    2021.01.03

    78번째 포스팅

     

    입사 302일차.

    코테 문제풀이 10주차 2번 문제

     

     

    0. 문제

      ① 연습문제 : 문자열 내 마음대로 정렬하기

      ② 설명

    문제설명

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

    제한 조건
    • strings는 길이 1 이상, 50이하인 배열입니다.
    • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
    • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
    • 모든 strings의 원소의 길이는 n보다 큽니다.
    • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

      ③ 링크

     

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

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

    programmers.co.kr

     

     

    1. 접근방법

      생각해낸 방법은 2가지

      ① Collections.sort()를 사용해서 비교

      ② Entry, CompareTo를 사용해서 비교

     

     

    2. 풀이

      ① 접근방법 :

      ② 풀이

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import java.util.*;
     
    class Solution {
        /*
        * 시작시간 : 21:15
        * 종료시간 : 22:11
        */
        public String[] solution(String[] strings, int n) {
            String[] answer = sortArrays(strings, n);
            return answer;
        }
        
        public String[] sortArrays(String[] strings, int n) {
            
            // 1. 정렬대상문자 + 문자열
            List<String> list = new ArrayList<>();
            for (int i = 0; i < strings.length; i++) {
                list.add(strings[i].charAt(n) + strings[i]);
            }
            
            // 2. Collections.sort() 메소드를 사용해서 오름차순 정렬
            Collections.sort(list);
            
            // 3. String[] 고정배열로 변환
            String answer[] = new String[strings.length];
            for (int i = 0; i < list.size(); i++) {
                answer[i] = list.get(i).substring(1, list.get(i).length());
                System.out.println(answer[i]);
            }
            
            return answer;
        }
    }
    cs

     

     

    3. 결과

     

     

    4. 주의사항

      ① Entry와 CompareTo를 사용할경우 두번째 문자부터 비교하는 코드가 짜기 어려워진다.

    728x90
    반응형

    댓글