본문 바로가기

백준 알고리즘

백준 [2675] 문자열 반복 - 자바 풀이

반응형

https://www.acmicpc.net/problem/2675

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net


 

 

 

입력을 받으니 Scanner을 사용하고,

T의 개수만큼 반복실행 해야하니 for문을 사용하면 되겠다.

실행할 케이스에는 두 가지 a, b를 따로 입력받으니 sc.nextInt() 혹은 sc.next()를 사용하면 되겠다.

근데 두 번째로 입력받은 b 문자열을 따로 분리해서 첫 번째 문자부터  a번 반복해 출력하는 것을

모든 문자열에서 반복하니 for문을 b의 문자열 길이만큼 b.length()번 반복하면 되겠다.

b의 n번째 문자를 a번 반복해 출력하고, 그걸 마지막 문자까지 반복 출력하면 해결 되겠다.

 

이런 식으로 순서대로 구상을 하고 코드를 하나씩 구현하면 된다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		
		for(int i=0; i<N; i++) {
			int a = sc.nextInt();
			String b = sc.next();
			
			for(int j=0; j<b.length(); j++) {
				for(int k=0; k<a; k++) {
					System.out.print(b.charAt(j));
				}
			}
			System.out.println();
		}
	}
}

나누어 살펴보자.

 

for(int i=0; i<N; i++) {
	int a = sc.nextInt();
	String b = sc.next();

주어진 문제에서 말한 T번을 N으로 두었고, N의 개수만큼 반복실행 해야하니 for문을 N번 반복하면 된다.

실행할 케이스에서 두 가지 a, b를 따로 입력받는데, a는 정수이니 sc.nextInt()를 입력받고,

b는 문자열이니 string b = sc.next()를 사용하면 되겠다.

 

for(int j=0; j<b.length(); j++) {
	for(int k=0; k<a; k++) {
        System.out.print(b.charAt(j));
	}

 

b 문자열을 따로 분리해서 첫 번째 문자부터  a번 반복해 출력해야한다.

 

for문을 b의 문자열 길이만큼, b.length()번 반복한다.

b의 j번째 문자를 a번 반복해 출력해야하니 .charAt을 사용한다.

b.charAt(j)는 b 문자열의 j번째 문자를 출력하게 한다.

그걸 마지막 문자까지 a번씩 반복 출력하면 된다.

 

System.out.println();

마지막으로, 출력할 때는 println으로 마무리를 해줘야 정상적인 작동이 가능하다고 한다.

왜 그런지는 추후 알아보고 정리하겠다.

 

반응형