본문 바로가기
Algorithm/Baekjoon

[백준] 2675번 : 문자열 반복 - Java

by unknownomad 2022. 3. 18.

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

 

2675번: 문자열 반복

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

www.acmicpc.net



풀이

1. Scanner + charAt()

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
		
        int T = in.nextInt();
        for(int i = 0; i < T; i++) {
            int R = in.nextInt();
            String S = in.next(); //nextLine() 쓰면 에러 발생
            //Scanner.nextLine(): 엔터값 입력 기준, 한줄 전부 읽음(공백까지 읽음)
            //Scanner.next(): 공백 기준으로 하나의 문자열만 읽음
			
            for(int j = 0; j < S.length(); j++) {           
                for(int k = 0; k < R; k++) { //R 만큼 반복 출력
                    System.out.print(S.charAt(j));
                }
            }
            System.out.println();
        }
    }
}

 

2. BufferedReader + split() + charAt()

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int T = Integer.parseInt(br.readLine());
		
		for(int i = 0; i < T; i++) {
	
			String[] str = br.readLine().split(" ");	// 공백 분리
			
			int R = Integer.parseInt(str[0]);	// String -> int
			String S = str[1];
			
			for(int j = 0; j < S.length(); j++) {
				for(int k = 0; k < R; k++) {
					System.out.print(S.charAt(j));
				}
			}
			System.out.println();
		}
	}
 
 
}

 

3. BufferedReader + split() + getBytes()

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
    public static void main(String[] args) throws IOException {
    
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        int T = Integer.parseInt(br.readLine());        
        for (int i = 0; i < T; i++) {
            String[] str = br.readLine().split(" ");
            
            int R = Integer.parseInt(str[0]);
            for (byte val : str[1].getBytes()) {
                for (int j = 0; j < R; j++) {
                    sb.append((char) val);
                }
            }
            sb.append('\n');
        }
        System.out.print(sb);
    }
}

성능

  • BufferedReader > Scanner

 


출처 : https://st-lab.tistory.com/63

댓글