티스토리 뷰

728x90
반응형

문제

 

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 

즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. 

S에는 QR Code "alphanumeric" 문자만 들어있다.

QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.

 

입력

 

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 

각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. 

S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 

 

출력

 

각 테스트 케이스에 대해 P를 출력한다.

 

2
3 ABC
5 /HTP

 

AAABBBCCC
/////HHHHHTTTTTPPPPP

 

풀이

 

문제만 읽으면 뭔 소린가 싶지만 예제를 보면 간단한 문제다. 각 단어를 알파벳 단위로 분해한 후 주어진 수만큼 반복해서

 

합치면 그만이다. 다행히 나는 자바 11을 사용하기 때문에 String 클래스의 repeat()을 사용할 수 있고,

 

문제는 짧게 풀린다.

 

import java.util.*;

public class Prob2675 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        List<String> list = new ArrayList<>();

        for (int i = 0; i < n; i++) {

            int a = sc.nextInt();

            list.add(Arrays.stream(sc.nextLine().trim().split(""))
                    .map(b -> b.repeat(a))
                    .reduce((x, y) -> x + y)
                    .get());
        }

        for (int i = 0; i < n; i++) {
            System.out.println(list.get(i));
        }
    }
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함