티스토리 뷰

  • 문제 설명

    문자열 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;
    }
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함