백준 1001 

 

 

넘나 쉬운 문제긴 한데

입력이 공백 단위로 주어진다는것만 주의를 하면 된다.

 

scanner로 입력받아서 연산하는 줄만 알고 있다가

BufferedReader로 입력받아서 연산하는 방법도 이제 기술해 보려고 한다.

 

scanner는 알고 있으니

https://st-lab.tistory.com/41

 

JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]

이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고

st-lab.tistory.com

 

BufferedReader를 쓰려면

readLine()을 통해 입력받아 연산하는 방법 두가지를 보자면

readLine()은 일단 한 행을 전부 읽기 때문에 공백단위로 입력해준 문자열을 공백단위로 분리해줘야 된다.

 

1. StringTokenizer 클래스를 이용한 분리

2. split() 이용한 분리

 

 

1.

자료형 타입을 잘 봐야 되는데

st.nextToken()은 문자열을 반환하니깐 Integer.parseInt()로 int 형변환 시켜준다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
        
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
 		String str = br.readLine();
		StringTokenizer st = new StringTokenizer(str," ");
		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		
		System.out.println(a-b);
	
/*    
굳이 String 변수 생성 안하고 입력과 동시에 구분자로 분리해줘도 된다.
 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		
		System.out.println(a-b); 
        
*/
	}
}

 

2.

br.readLine()을 통해 읽어온 것은 split(" ")해서 공백 단위로 나눠준 뒤 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));
		
		String[] str = br.readLine().split(" ");
		int a = Integer.parseInt(str[0]);
		int b = Integer.parseInt(str[1]);
		
		System.out.println(a-b);
 
	}
 
}

 

 

성능으로 보면 BufferedReader가 Scanner보다 빠르고 메모리도 적다.

 

앞으로는 문제에 시간 초과로인해 못 푸는 문제들도 많을 거라고 하니깐 익혀두기

'STUDY > cote' 카테고리의 다른 글

자바: 대소문자, 문자열(구별, 비교, 변경) 메서드 활용  (0) 2023.05.09
출력의 방식  (0) 2023.05.09
백준 문제  (0) 2022.04.14

+ Recent posts