코딩테스트 - 프로그래머스/Lv. 0

[64] JAVA 문자 반복 출력하기

유혁스쿨 2023. 11. 27. 12:19
728x90
반응형

문제 설명

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.


제한사항
  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.

 

입출력 예
my_string n result
"hello" 3 "hhheeellllllooo"

입출력 예 #1

  • "hello"의 각 문자를 세 번씩 반복한 "hhheeellllllooo"를 return 합니다.

[나의 풀이]

import java.util.Arrays;
import java.util.stream.Stream;
import java.util.Collections;
import java.util.stream.Collectors;

class Solution {
    public String solution(String my_string, int n) {
        // return Arrays.stream(my_string.split("")).flatMap(el->Collections.nCopies(n, el).stream()).collect(Collectors.joining());
        return Stream.of(my_string.split(""))
            		 .flatMap(el->Collections
                            		.nCopies(n, el)
                                    .stream())
           			 .collect(Collectors.joining());
    }
}

 

flatMap(el -> Collections.nCopies(n, el).stream()) 풀이

Collections.nCopies(n, el)을 통해 el을 n번 만큼 복사한 List를 반환한 후 stream으로 변환한다.

List 등의 object로 감싸진 모든 원소를 단일 원소 스트림으로 반환하는 flatMap()을 통해 stream으로 반환해준다.

해당 stream을 모두 수집한 뒤 Collectors.joining()를 통해 문자열 데이터를 합한뒤 String으로 반환해준다.

 

[다른 풀이]

repeat() 활용한다.

Stream.of(my_string.split("")).map(el -> el.repeat(n)).collect(Collectors.joining());

 

 

 

728x90
반응형