remagine

알고리즘 풀기 (10) 문자열 반복 (약간 쉬움) 본문

알고리즘

알고리즘 풀기 (10) 문자열 반복 (약간 쉬움)

remagine 2017. 8. 11. 11:49

문제

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

다시 설명하자면, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 T를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.

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

입력

첫째 줄에 테스트 케이스의 개수 T(1 <= T <= 1,000)가 주어진다. 각 테스트 케이스는  반복 횟수 R(1 <= R <= 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 

출력

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



1. 내 풀이

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
31
32
33
34
35
36
37
38
39
40
41
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class Main {
 
    public static void main(String... args) throws NumberFormatException, IOException {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int test = Integer.parseInt(br.readLine()); // 테스트 케이스 갯수
        ArrayList<String> list = new ArrayList<String>();
 
        for (int i = 0; i < test; i++) {
            list.add(br.readLine()); // 테스트 케이스 갯수 만큼 문자열이 한줄씩 넣어짐
        }
        br.close();
 
        for (int l = 0; l < list.size(); l++) {
            String S = list.get(l); // 공백으로 구분되어 반복횟수가 주어짐
 
            String result = "";
            String[] array = S.split(" ");
            int testCase = Integer.parseInt(array[0]); // 반복횟수
            String testString = array[1]; // 문자열
 
            for (int j = 0; j < testString.length(); j++) {
                char c = testString.charAt(j);
                for (int k = 0; k < testCase; k++) {
                    result += c;
                }
            }
 
            System.out.println(result);
            result = "";
 
        }
 
    }
 
}
cs



2. 다른 풀이

 import java.io.*;

class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());

String[] reader = new String[2];

for (int i = 0; i < n; i++) {
reader = br.readLine().split(" ");
for (int j = 0; j < reader[1].length(); j++) {
for (int k = 0; k < Integer.parseInt(reader[0]); k++) {
System.out.print(reader[1].charAt(j));
}
}
System.out.println();
}
}
}


Comments