백준 15552번 문제를 풀던 중
BufferedReader와 Bufferedwriter를
이용해 문제를 풀라고 하길래
급하게 배워보는 중
BufferedReader
: Scanner 대신 사용 가능
※주의할 점은 데이터를 받을 때
enter로만 구분 가능하고,
데이터를 string형식으로 받음.
Bufferedwriter
: System.out.println(); 대신 사용 가능
이 두개를 사용하면
입출력 시 빠른 속도로
사용할 수 있음.
이유는
입력된 데이터가 바로 전달되지 않고
버퍼를 거쳐 전달되기 때문에
데이터 처리 효울성이 높아서 라고 함.
사용 전
import java.io.*;
임포트 필수
또는 아래와 같이
필요한 것만 불러오기도 가능

또한
BufferedReader를 쓰기 위해서는
예외처리가 필수
예외처리
try&catch를 사용하기도 하지만
대개 throws IOException을 사용.
import java.io.IOException;
public static void main(String[] args) throws IOException{}
클래스 임포트와
main 클래스 옆에 throws IOException 선언.
(1)BufferedReader
본격적인 선언은
BufferedReader br = new BufferedReader(new InputStreamReader(System.in);
String a = br.readLine();
int b = Integer.parseInt(br.readLine());
이렇게 받은 데이터를
공백단위로 가공하기 위해서는
(1) String.split()함수 사용
이는 파이썬에서
공백 구분해주던 그 방법과 동일
(2)StringTokenizer과 nextToken()함수
StringTokenizer st = new StringTokenizer(i);
int a = Integer.parseInt(st.nextToken());
Scanner 사용시 이제야 안 사실인데
따로 분리 코드를 작성하지 않더라도
nextLine(), nextInt()가
알아서 분리해주는 역할이었음
.
.
굿..
split()이런거 필요없음

(2)BufferedWriter
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stirng a = "java";
bw.write(s+"\n");
bw.flush();
bw.close();
반드시 flush()와 close()를 사용해
닫아주어야 함.
flush()는 버퍼에 있는 데이터를 다 털어내는 것..?
==>구글링의 결과
버퍼에 있는 데이터를 클라이언트에 전송하고 비워내는 것.
**원래는 가득 차면 자동으로 비워지지만
flush()를 사용하면
당장 비워짐.
백준 15552번 풀이

scanner가 아닌
bufferedReader를 사용해야 했던 문제

baekjoon_15552
백준 11021번
연습삼아 다음 문제도
scanner대신 buffer를 사용해서 품

문제는 매우 간단

baekjoon_11021(1)
이렇게 제출 했을 때
메모리, 시간, 코드길이


baekjoon_11021(2)
이번에는 scanner를 사용해서 품
(근데 입출력이 저렇게 나와도
정답으로 인식되는지 이제 알았다...)
이때 메모리, 시간, 코드길이

확실히 코드 길이는 scanner가 짧지만
메모리나 시간은
buffer가 훨씬 빠름.
'백엔드개발 > Java' 카테고리의 다른 글
[Java] 일급 컬렉션 (0) | 2024.10.30 |
---|---|
[JAVA] StringBuilder (2) | 2024.10.12 |
[JAVA] 멘토씨리즈 자바 Chapter7 (3) | 2024.10.12 |
[JAVA] 멘토씨리즈 자바 Chapter6 (2) | 2024.10.12 |
[Java] 멘토씨리즈 자바 Chapter02-Chapter05 (1) | 2024.10.12 |