
내가 생각했을때 문제에서 원하는부분
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다.
예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
내가 이 문제를 보고 생각해본 부분
testStrings 배열에 "banana"와 "programmers" 두 문자열을 넣어, 두 케이스에 대해 테스트하도록 구성했다.
for 반복문은 이 배열을 돌면서 각 문자열에 대해 solution 메서드를 호출해 접미사 배열을 구한다.
Arrays.toString(result)로 반환된 문자열 배열을 읽기 쉽게 출력한다.
solution 메서드의 역할은 다음과 같다.
입력 문자열 my_string의 길이를 구해 length에 저장한다.
접미사 개수는 문자열 길이와 같으므로, 같은 길이의 문자열 배열 suffixes를 선언한다.
반복문을 돌며 my_string.substring(i)로 인덱스 i부터 끝까지의 접미사 문자열을 뽑아 suffixes 배열에 순서대로 저장한다.
접미사 배열을 Arrays.sort(suffixes)를 통해 알파벳 사전 순서대로 정렬한다.
정렬된 배열을 반환한다.
결과적으로 이 코드는 "banana"와 "programmers"에서 나올 수 있는 모든 접미사를 추출해 알파벳 순으로 정리하여 각각 출력한다.
코드로 구현
import java.util.Arrays;
class Solution {
public String[] solution(String my_string) {
int length = my_string.length();
String[] suffixes = new String[length];
for (int i = 0; i < length; i++) {
suffixes[i] = my_string.substring(i);
}
Arrays.sort(suffixes);
return suffixes;
}
}
프로그래머스 코드
package programmers;
import java.util.Arrays;
// 프로그래머스 접미사 배열
public class Main36 {
public static void main(String[] args) {
String[] testStrings = {"banana", "programmers"};
for (String my_string : testStrings) {
String[] result = solution(my_string);
System.out.println(Arrays.toString(result));
}
}
public static String[] solution(String my_string) {
int length = my_string.length();
String[] suffixes = new String[length];
for (int i = 0; i < length; i++) {
suffixes[i] = my_string.substring(i);
}
Arrays.sort(suffixes);
return suffixes;
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.