백준 4470

hong030·2023년 1월 30일
0

*solved.ac 기준 브론즈 4단계 문제

풀이)
여러 번 입력을 받고 출력을 하기 위해 for 문을 이용하는 문제이다.
어렵지는 않으나 BufferedReader 사용에 주의점이 있어 해당 문제를 풀어본다.

아래 코드를 보면

int num = Integer.parseInt(bf.readLine());

이라 되어있다. 그러나 BufferedReader에는 read() 메소드를 통해 int 형 입력을 받을 수 있다.

//이렇게 써도 오류는 안 남.
int num = bf.read();

그렇다면 굳이 왜 readLine() 메소드를 쓴 다음 정수로 바꿔주었을까?
실제로 bf.read()를 통해 숫자를 입력받으면 이상한 결과가 나온다.
read() 메소드는 입력 값을 int값으로 변형하여 읽어오는 방식이기 때문이다.

예를 들어 정수 1을 입력하면 숫자 1을 읽어오는 것이 아니라 '1'에 해당하는 아스키 코드 값을 받아들여 컴퓨터는 입력값을 49라고 인식한다.

때문에 int a = br.read() - 48; br.readLine(); 를 하거나, readLine()으로 읽어 int형으로 형변환을 해야 한다.

내 코드)


import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedReader;


public class Main{
	public static void main(String[]args) throws IOException{
		
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(bf.readLine());
		String stArr[] = new String[num];
		
		for(int i = 0; i<num; i++) {
			stArr[i] = bf.readLine();			
		}
		for(int i = 0; i<stArr.length; i++) {
			System.out.printf("%d. %s\n", (i+1), stArr[i]);
		}
		
		bf.close();
	}	
}
profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글