[JAVA]백준 알고리즘 2675번 : 문자열 반복
https://www.acmicpc.net/problem/2675
2675번: 문자열 반복
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다
www.acmicpc.net
문제
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.
QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.
풀이
문자열을 반복하여 출력하는 문제이다.
백준 알고리즘 2438번 : 별 찍기 - 1문제와 유사하여, 풀이 방법도 비슷하다.
String 클래스의 charAt() 메서드와 같이 사용하면 어렵지 않게 해결할 수 있다.
🔔 자세한 코드 설명은 더보기 란에 작성하였습니다.
1. 테스트 케이스의 개수를 입력받는다.
int T = Integer.parseInt(br.readLine());
2. T만큼 반복문을 돌린다. (2-*번의 코드는 이 반복문 안의 코드이다.)
for(int i = 0; i < T; i++) {
2-1. 입력된 정보를 BufferedReader 클래스와 StringTokenizer 클래스를 이용하여 가공한다. (st : StringTokenizer 클래스, br : BufferedReader 클래스, R : 반복할 횟수, S : 입력된 문자열)
st = new StringTokenizer(br.readLine());
int R = Integer.parseInt(st.nextToken());
String S = st.nextToken();
2-2. 문자열의 길이만큼 반복문을 돌린다. (2-2-*번의 코드는 이 반복문 안의 코드이다.)
for(int j = 0; j < S.length(); j++) {
2-2-1. R만큼 반복문을 돌려서 j번째 문자를 R번 sb에 넣는다. (sb : StringBuilder 클래스 객체) 이 과정에서 charAt() 메서드를 사용하였다.
for(int k = 0; k < R; k++) {
sb.append(S.charAt(j));
}
2-3. 줄 바꿈을 한다.
sb.append("\n");
3-1. sb를 출력한다.
System.out.println(sb);
코드
BufferedReader 클래스와 StringBuilder 클래스를 이용한 코드
import java.io.*;
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;
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int i = 0; i < T; i++) {
st = new StringTokenizer(br.readLine());
int R = Integer.parseInt(st.nextToken());
String S = st.nextToken();
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);
}
}
틀린 부분이 있다면 정정해 주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!