본문 바로가기

개발(합니다)/알고리즘&코테

알고리즘 단계별로 풀어보기 : BOJ-2675(문자열반복)

반응형

문제(출처)

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


내 풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    public static void main(String args[]) {

        try {
            int num = Integer.parseInt(br.readLine());
//          입력 받은 값을 변수에 저장합니다.
            for (int i = 0; i < num; i++) {
//              첫 번째 입력 받은 값 만큼 반복합니다.
                String[] str = br.readLine().split(" ");
//              두번째부터 입력 받는 반복 횟수, 문자열 값을 공백으로 구분하여 String 배열에 저장합니다.
                for (int j = 0; j < str[1].length(); j++) {
//                  문자열 값 만큼 반복합니다.
                    strPrint(str,j);
//                  가독성을 위해 함수를 사용했습니다.
                }
                bw.newLine();

            }
            bw.flush();
            bw.close();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void strPrint(String[] str, int j) {
        for (int k = 0; k < Integer.parseInt(str[0]); k++) {
//          문자를 입력 받은 반복 횟수 만큼 하나씩 반복하여 출력합니다.
            try {
                bw.write(String.valueOf(str[1].charAt(j)));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}


내 풀이 해석

첫 번째 입력 받은 값을 num변수에 저장합니다.
num 변수만큼 1차 반복하고 두 번째 입력 받은 값을 공백을 기준으로 str배열변수에 저장합니다.
str 배열 변수의 1번째 값만큼 2차 반복하고 가독성을 위해 만든 strPrint를 호출합니다.
strPrint로 str배열 변수와 2차 반복문의 j를 전달합니다.
strPrint는 str 배열 번수의 str 1번째 문자를 하나씩 0번째 값만큼 반복하여 출력합니다.


반응형