package programmers;
import java.util.Arrays;
import java.util.stream.IntStream;
class 접미사_배열_Java_230708 {
/*
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다.
예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때,
my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
*/
public String[] solution(String my_string) {
int length = my_string.length();
String [] 접미사 = new String[length];
for(int i = 0; i < length; i++){
접미사[i] = my_string.substring(i);
}
Arrays.sort(접미사);
return 접미사;
}
public String[] solution_stream(String myString) {
return IntStream.range(0, myString.length()).mapToObj(myString::substring).sorted().toArray(String[]::new);
/*
1. `IntStream.range(0, myString.length())`을 사용하여
0부터 `myString`의 길이 - 1까지의 정수 스트림을 생성합니다. 이 스트림은 인덱스를 나타냅니다.
2. `mapToObj(myString::substring)`을 사용하여 각 인덱스를 해당 인덱스부터 끝까지의 부분 문자열로 매핑합니다.
이렇게 생성된 스트림은 문자열의 모든 접미사를 나타냅니다.
3. `sorted()`를 사용하여 접미사를 사전순으로 정렬합니다.
4. `toArray(String[]::new)`를 사용하여 정렬된 스트림을 문자열 배열로 변환하여 반환합니다. //★
따라서, `solution` 메서드는 주어진 문자열의 모든 접미사를 사전순으로 정렬한 결과를 문자열 배열로 반환합니다.
*/
}
}
package programmers
class 접미사_배열_Kotlin_230708 {
fun solution(my_string: String): Array<String> {
val length = my_string.length
val 접미사 = Array(length) { "" }
for (i in 0 until length) {
접미사[i] = my_string.substring(i)
}
접미사.sort()
return 접미사
}
fun solution_stream(myString: String): Array<String> {
return (0 until myString.length)
.map { myString.substring(it) }
.sorted()
.toTypedArray()
}
fun solution_short(myString: String) = myString.indices.map(myString::substring).sorted()
/*
1. `solution` 메서드:
- 주어진 문자열 `my_string`의 모든 접미사를 사전순으로 정렬하여 문자열 배열로 반환합니다.
- `length` 변수에 `my_string`의 길이를 저장합니다.
- `접미사`라는 이름의 문자열 배열을 생성하고, 길이는 `length`와 동일합니다.
- `for` 루프를 사용하여 0부터 `length - 1`까지 반복합니다.
- `substring(i)`를 사용하여 `my_string`의 현재 인덱스부터 끝까지의 부분 문자열을 구합니다.
- 구한 부분 문자열을 `접미사` 배열의 해당 인덱스에 저장합니다.
- `접미사` 배열을 사전순으로 정렬합니다.
- 정렬된 `접미사` 배열을 반환합니다.
2. `solution_stream` 메서드:
- `solution` 메서드와 동일한 기능을 수행하지만, 스트림을 사용하여 구현합니다.
- `(0 until myString.length)` 범위를 생성하여 0부터 `myString`의 길이 - 1까지의 정수를 나타내는 범위를 만듭니다.
- `map` 함수를 사용하여 각 인덱스를 해당 인덱스부터 끝까지의 부분 문자열로 변환합니다.
- `sorted` 함수를 사용하여 접미사를 사전순으로 정렬합니다.
- `toTypedArray` 함수를 사용하여 정렬된 스트림을 문자열 배열로 변환하여 반환합니다.
3. `solution_short` 메서드:
- `solution_stream` 메서드와 동일한 기능을 수행합니다.
- 더 간결한 형태로 작성되었습니다.
- `myString.indices.map(myString::substring)`을 사용하여 `myString`의 각 인덱스를 해당 인덱스부터 끝까지의 부분 문자열로 매핑합니다.
- `sorted` 함수를 사용하여 접미사를 사전순으로 정렬합니다.
- 정렬된 결과를 반환합니다.
*/
}
댓글
댓글 쓰기