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

박영준·2023년 6월 21일
0

코딩테스트

목록 보기
264/300
class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = {};
        return answer;
    }
}

해결법

방법 1

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
                
        for (int i = 0; i < strings.length; i++) {
            strings[i] = strings[i].substring(n, n+1) + strings[i];       // n인덱스에 있는 문자 잘라서 담기 + 원래 문자열을 뒤에 붙여주기
        }
        
        Arrays.sort(strings);
        
        for (int i = 0; i < strings.length; i++) {
            strings[i] = strings[i].substring(1);        // 1번째 인덱스 ~ 끝까지 문자열 자르기 (= 원래 문자열)
        }
        
        return strings;
    }
}
  • 주의!

    • 처음에 생성하도록 제시되었던 String[] answer = {} 를 사용해서 answer[i] 배열에 담게 되면
      answer 배열에는 아무런 값이 없는 상태에서 잘린 문자들이 추가되는 것이다.
      이 경우, strings[i].substring(1) 에 의해 1번째 인덱스부터 잘려서 나오게된다. ("car"가 아닌 "ar"로)
      따라서, String[i]를 새로운 문자로 덮어씌우는 방식으로 진행해야 한다.

      // 잘못된 방식
      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++) {
                  answer[i] = strings[i].substring(n, n+1) + strings[i];       // n인덱스에 있는 문자 잘라서 담기 + 원래 문자열을 뒤에 붙여주기
              }
      
              Arrays.sort(answer);
      
              for (int i = 0; i < strings.length; i++) {
                  answer[i] = strings[i].substring(1);        // 1번째 인덱스 ~ 끝까지 문자열 자르기 (= 원래 문자열)
              }
      
              return answer;
          }
      }

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

profile
개발자로 거듭나기!

0개의 댓글