성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 접미사 배열 (Arrays.sort()) - JAVA

와나나나 2023. 7. 13. 15:12
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 9 - (4)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 |  어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

 

입력 #1 | "banana"

출력 #1 | ["a", "ana", "anana", "banana", "na", "nana"]


>> 풀이 <<

배열은 접미사인 문자열을 계속 추가할 수 없으므로 리스트를 만들어 리스트에 접미사들을 추가하고, 이를 배열로 바꾼 후 오름차순 정렬을 해 문제를 풀려고 한다. 접미사를 구할 땐 for문을 이용해 i 부터 끝까지의 문자열을 구하면 된다.

 

  • 배열의 오름차순  -> Arrays.sort()
    • Arrays.sort(Array) 를 사용하려면, java.util.Arrays 를 선언해야 한다.
  • 배열의 내림차순 -> Arrays.sort(arr, Collections.reverseOrder())
    • 이 역시 java.util.Arrays 를 선언해야 한다.
    • Collections는 기본적으로 Object를 상속한 클래스에 대해서 사용 가능한 인터페이스라서 String, Integer 같은 제네릭타입 변수에는 사용이 가능하지만, int, char 등 기본타입에는 사용이 불가능하다.

import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;

class Solution {
    public String[] solution(String my_string) {
        List<String> lst = new ArrayList<>();
        for (int i = 0 ; i < my_string.length() ; i++) {
            lst.add(my_string.substring(i,my_string.length()));
        }
        String[] answer = lst.toArray(new String[lst.size()]);
        Arrays.sort(answer);
        
        
        return answer;
    }
}