슬기로운슬기

문제

[문자열] [stream]

https://school.programmers.co.kr/learn/courses/30/lessons/181867

 

프로그래머스

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

programmers.co.kr

 

해설1

class Solution {
    public int[] solution(String myString) {
        String[] answer = myString.split("x", -1); // 빈 문자열도 유지하기 위해 두 번째 인자에 -1 사용
        int[] result = new int[answer.length];
        
        for (int i = 0; i < answer.length; i++) {
            result[i] = answer[i].length();
        }
        
        return result;
    }
}
  • 문제에서 "x"를 기준으로 나눴을 때 빈 문자열도 저장이 되어야 한다고 나와있다.
    • split("x", -1)을 하기 되면 빈 문자열도 유지되도록 설정이 된다. [2번째 인자에 -1을 넣어줌]
  • 반복문을 통해 answer의 배열 안에 있는 문자열 길이를 result 배열에 저장해준다. 

 

해설2 (stream 사용하기)

import java.util.Arrays;

class Solution {
    public int[] solution(String myString) {

        return Arrays.stream(myString.split("x", myString.length()))
            .mapToInt(x -> x.length())
            .toArray();
    }
}

 

Arrays.stream(myString.split("x", -1))

 

  • 주어진 문자열 myString을 "x"를 기준으로 분할 한 후, 분할된 부분 문자열을 배열로 반환 
  • split()의 2번째 인자는 -1을 넣어 빈 문자열도 유지하도록 설정
  • 배열을 스트림으로 변환

 

.mapToInt(x -> x.length())
.toArray()
  • 문자열의 길이를 int로 매핑 
  • 스트림의 요스들을 배열로 변환 

 

 

반응형
profile

슬기로운슬기

@스를기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!