본문 바로가기

JAVA

BAEKJOON(백준) 문자열 - 2675번 JAVA CODE

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    	//스캐너 선언
		Scanner s = new Scanner(System.in);
		
        //Test Case 개수
		int T;
		T = s.nextInt();
		
        //입력 받을 String 배열 Test Case만큼 생성
		String[] str = new String[T];
        //배열 str을 변형하여 넣을 새로운 String 배열
		String[] nstr = new String[T];
        //nstr에 새로운 문자열이 삽입되기 전에 거쳐갈 char배열
		char[][] charArray = new char[T][60];
		
        //각 문자를 반복할 횟수
		int R[] = new int[T];
        //str배열의 각 문자열 길이
		int len[] = new int[T];
		
        //입력받기
		for(int i=0; i<T; i++) {
			R[i] = s.nextInt();
			str[i] = s.next();
			len[i] = str[i].length();
		}
		
		int count = 0;
        //str배열을 한 글자씩 쪼개서 넣을 char배열
		char[] split;
		
		for(int i=0; i<T; i++) {
        	//String형식의 str배열을 charArray로 변환해서 split에 삽입
			split = str[i].toCharArray();
			for(int j=0; j<len[i]; j++) {
				for(int l=0; l<R[i]; l++) {
                	//char 2차원 배열에다가 순서대로 R번 반복된 문자 split 삽입
					charArray[i][count] = split[j];
					count++;
				}
			}
            
            //char인 2차원 배열에 들어있는 문자들 String형식으로 변환
			nstr[i] = String.valueOf(charArray[i]);
		}
		
		for(int i=0; i<T; i++)
			System.out.print(nstr[i]+"\n");
		
		s.close();
	}
}

<<Runtime ERROR>>

Java 문자열 Scanner

next() = 공백을 인식하지 못함

nextLine() = 공백을 인식해줌 (문장 전체를 입력 받아줌)

 

String 자르기 method

split() 

substring() 

 

형변환 method

toCharArray() = String to char

String.valueOf() = char to String

Arrays.toString() = char to String

 

 

 

 

효율적인 방법

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와 유사 (속도 : BufferedReader > Scanner)

입력받을 때 readline() method 사용

그러나 return값이 String값으로 고정되기 때문에 IOException을 사용하여 형변환 해줘야함

BufferedWriter : System.out.println()와 유사

 

InputStreamReader : 자바에서 가장 기본이 되는 입력 스트림 (<->OutputStream)

1. byte단위 데이터를 char단위 데이터로 처리할 수 있도록 변환

2. char배열로 데이터를 받을 수 있음

 

IOException : 예외가 발생할 수 있는 메서드에 IOException을 throw해줌