백준 1001
넘나 쉬운 문제긴 한데
입력이 공백 단위로 주어진다는것만 주의를 하면 된다.
scanner로 입력받아서 연산하는 줄만 알고 있다가
BufferedReader로 입력받아서 연산하는 방법도 이제 기술해 보려고 한다.
scanner는 알고 있으니
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 |