티스토리 뷰
- 문제 설명
문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 빈 문자열은 반환할 배열에 넣지 않습니다.
- 제한사항
1 ≤ myString ≤ 100,000
myString은 알파벳 소문자로 이루어진 문자열입니다.
- 입출력 예
- 입출력 예 설명
입출력 예 #1
myString을 "x"를 기준으로 자른 배열은 ["a","b","c","d"]이며, 이 배열은 이미 사전순으로 정렬된 상태입니다. 따라서 해당 배열을 return 합니다.
입출력 예 #2
myString을 "x"를 기준으로 자른 배열은 ["d","cc","bbb","aaaa"]이며, 이 배열을 사전순으로 정렬하면 ["aaaa","bbb","cc","d"]입니다. 따라서 해당 배열을 return 합니다.
🤔 stream 사용
import java.util.Arrays;
class Solution {
public String[] solution(String myString) {
String[] answer = Arrays.stream(myString.split("x"))
.filter(str -> !str.isEmpty())
.sorted()
.toArray(String[] :: new);
return answer;
}
}
- Stream 인터페이스(Stream<T>)는 컬렉션 데이터를 쉽게 다루도록 도와주는 개념
- List, Set, Map 같은 자료구조, 혹은 배열 → 여러 개의 데이터를 저장하는 구조
- 스트림 변환 방법
- 컬렉션, 배열을 스트림으로 변환하는 예제
import java.util.*; import java.util.stream.*; public class StreamExample { public static void main(String[] args) { // ✅ List -> Stream List<String> list = List.of("A", "B", "C"); list.stream().forEach(System.out::println); // ✅ Set -> Stream Set<Integer> set = Set.of(1, 2, 3); set.stream().forEach(System.out::println); // ✅ Map -> Stream (key-value 쌍으로 변환) Map<String, Integer> map = Map.of("A", 1, "B", 2); map.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()) ); // ✅ 배열 -> Stream String[] array = {"X", "Y", "Z"}; Arrays.stream(array).forEach(System.out::println); } }
🤔 Stream 안 쓰는 코드‼️
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public String[] solution(String myString) {
ArrayList<String> dictionary = new ArrayList<String>();
// 1. 문자열을 'x' 문자를 기준으로 분할
for(String ch : myString.split("x")) {
if(!ch.isEmpty()) dictionary.add(ch);
}
// 2. toArray() 메소드를 사용하여 String 배열로 변환
// new String[dictionary.size()]: 변환될 배열의 타입과 크기를 지정
String[] convertedDictionary = dictionary.toArray(new String[dictionary.size()]);
Arrays.sort(convertedDictionary);
return convertedDictionary;
}
}
'알고리즘 공부⛏️' 카테고리의 다른 글
[Java / 프로그래머스] 접두사인지 확인하기 (0) | 2025.03.26 |
---|---|
[Java / 프로그래머스] 배열 만들기 1 (0) | 2025.03.26 |
💡(Java)등차수열의 특정한 항만 더하기 (0) | 2025.02.27 |
💡(Java)날짜 비교하기 (1) | 2025.02.24 |
💡(Java)조건에 맞게 수열 변환하기 1 (0) | 2025.02.18 |
댓글