[백준알고리즘] 2675번 문자열 반복 _ java

문제

문자열 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를 출력한다.

입출력 예제

예제 입력 1

1
2
3
2
3 ABC
5 /HTP

예제 출력 1

1
2
AAABBBCCC
/////HHHHHTTTTTPPPPP


소스코드(Scanner)

여기서 주의해야할 점

  • Scanner.nextLine()이 아닌 Scanner.next()로 입력받아야한다.
    • nextLine()으로 입력받으면 입력과정에서 공백까지 읽어버리기 때문이다.
  • System.out.println을 해주기

toCharArray() 사용

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
import java.util.Scanner;

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

    // 테스트 케이스의 개수
    int T = sc.nextInt();
    // 반복횟수
    int R;
    // 문자형 배열
    char[] S;

    for(int i=0;i<T;i++){
      R = sc.nextInt();
      S = sc.next().toCharArray();

      for(int x=0, cnt=S.length;x<cnt;x++){
        for(int y=0;y<R;y++){
          System.out.print(S[x]);
        }
      }
        System.out.println();
    }
  }
}

charAt() 사용

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
import java.util.Scanner;

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

    // 테스트 케이스의 개수
    int T = sc.nextInt();
    // 반복횟수
    int R;
    // 문자형 배열
    String S;

    for(int i=0;i<T;i++){
      R = sc.nextInt();
      S = sc.next();
      for(int x=0, cnt=S.length();x<cnt;x++){
        for(int y=0;y<R;y++){
          System.out.print(S.charAt(x));
        }
      }
      System.out.println();
    }
  }
}


소스코드(BufferedReader 사용)

실행시간은 확실히 BufferedReader을 사용하는 게 덜 걸린다! 여기서 오류났던 부분은 throws IOException이 없으니 오류가 발생했다.

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
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    // 테스트 케이스의 개수
    int T = Integer.parseInt(br.readLine());
    // 반복횟수
    int R;
    // 문자형 배열(반복횟수 포함)
    String[] str;
    // 문자형 배열
    String S;

    for(int i=0;i<T;i++){
      str = br.readLine().split(" ");//공백으로 분리 앞쪽은 숫자로
      R = Integer.parseInt(str[0]);
      S = str[1];

      for(int x=0, cnt=S.length();x<cnt;x++){
        for(int y=0;y<R;y++){
          System.out.print(S.charAt(x));
        }
      }
      System.out.println();
    }
  }
}


참고