[자바] 백준 2675번 문제

dongeranguk·2022년 6월 21일
0

백준

목록 보기
1/2

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

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		StringBuilder sb = new StringBuilder();
		
		int T = Integer.parseInt(st.nextToken());
		
		for(int i=0; i < T; i++) {
			String[] str = br.readLine().split(" ");
			
			int R = Integer.parseInt(str[0]);
			String S = str[1];
			
			for(int j=0; j < S.length(); j++) {
				for(int k=0; k<R; k++) {
					sb.append(S.charAt(j));
				}
			}
			sb.append('\n');
		}
		System.out.println(sb);
	}
}

1. 요구사항 분석

  1. 첫번째 줄은 테스트 케이스의 개수이다.

  2. 각 테스트 케이스는 반복횟수문자열 S가 공백으로 구분되어 주어지기 때문에 공백을 제거할 필요가 있다.


2. 코드 분석

  1. StringTokenizer 객체를 생성하면서 매개 변수로 br.readLine()이 전달되므로 st.nextToken()에는 첫번째 줄이 들어간다.

  2. StringTokenizer는 리턴 타입이 String이므로, int형으로 타입 변환이 필요하다.

  3. StringTokenizer 또는 split() 메소드로 공백을 제거한다.


StringTokenizer 객체를 생성하면서 매개 변수로 br.readLine()이 전달 되면서 한 줄을 읽는다. 따라서 st.nextToken() 메소드의 리턴 값이 int T에 리턴된다.

0개의 댓글