백준 2675번 문자열 반복 - 자바

728x90

www.acmicpc.net/problem/2675

 

2675번: 문자열 반복

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

www.acmicpc.net


1. 이 문제는 테스트 케이스의 개수가 T개 만큼 주어집니다.

2. T 테스트 케이스는 숫자 문자열로 이루어져 있습니다.

3. 문자열에 문자 하나당 숫자만큼의 반복을 해서 새로운 문자열 P를 만들어 내라는 문제입니다.

 

예제처럼 3 ABC가 들어오면 A3번 B3번 C3번 씩 해서 새로운 문자열 

AAABBBCCC를 만들어내면 됩니다.

 

------------------------------------전체 코드------------------------------------

import java.util.Scanner;
class Main {  
  public static void main(String args[]) { 
    Scanner sc = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();
    int t = sc.nextInt();
    for(int i=0; i<t; i++){
      int r = sc.nextInt();
      String s = sc.next();
      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.toString());
  } 
}

 

입력 - Scanner

출력 - StringBuilder

사용

 

테스트 케이스 개수를 받기위한 t 를 입력받습니다.

다중 반복문입니다.

테스트 케이스의 개수만큼 반복을 합니다.

테스트케이스에 입력되는 3 ABC를 받기 위한 변수는 r,s입니다.

3라는 반복되는 숫자를 r에 입력받습니다.

문자열 "ABC"를 받기위해 s에 입력받습니다.

그러면 r = 3 , s = "ABC"가 입력되었습니다.

 

문자열 s의 크기만큼 반복합니다. "ABC"이니 3번 반복합니다.

그 안에서 r만큼 또 반복합니다. r은 3이니 3번 반복됩니다.

그러면 우리는 AAABBBCCC를 만들기 위해서

A를 가져와야합니다. A는 문자열 s에 0번째 인덱스에 위치해있습니다.

순서대로 'B','C' 는 1번째 2번째에 위치해있습니다.

그러니 0.1.2가 순서대로 증가하는 j를 인덱스로 가져옵니다.

charAt()를 사용하여 해당하는 인덱스의 문자를 가져왔고 그 문자를 r만큼 반복해서 StringBuilder에 append해줍니다.

그러면 sb에는 "AAABBBCCC"가 입력됬습니다.

다음 테스트 케이스의 출력을 위해 추가해줍니다.

sb를 출력해줍니다.

예제대로 입출력됬습니다.

반응형