본문 바로가기
Algorithm

백준 알고리즘 2675번 문제풀이 - 자바(JAVA)

by LasBe 2021. 12. 27.
반응형

문제

 

입력

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

출력

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


결과


코드

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

public class Baek2675 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int testCase = Integer.parseInt(br.readLine());
		
		for(int i=0;i<testCase;i++) {
			String test[] = br.readLine().split(" ");
			StringBuilder sb = new StringBuilder();
			for(int j=0;j<test[1].length();j++) { //반복할 단어
				for(int q=0;q<Integer.parseInt(test[0]);q++) { //반복할 횟수
					sb.append(test[1].charAt(j));
					// System.out.println(test[1].charAt(j));
				}
			}
			System.out.println(sb);
		}
	}
}

 


문제풀이

첫번째 반복문에서는 입력을 받아 split() 메소드로 test[0]에는 글자별 반복 횟수 test[1]에는 단어를 저장한다.

 

두번째 반복문에서는 test[1].length()를 통해 단어의 길이만큼 반복문을 수행시킨다.

 

세번재 반복문에서는 test[0]을 통해 원하는 횟수만큼 한 글자를 반복해서 출력한다.

 

 

첫 시도에서는 글자마다 하나하나 출력하는 바람에

생각보다 시간이 오래 잡혀먹어서 다른분들 코드를 참고해 다시 시도했다.

 

두번째 시도에선 StringBuilder를 통해 출력할 글자들을 차곡차곡 쌓아 한번에 출력을 해주었다.

 

아무래도 하나하나 출력하는 것 보다 StringBuilder를 통해 버퍼의 기능을 수행해서 성능이 더 좋아졌을 거라고 생각한다.

반응형

댓글


오픈 채팅