#15552 빠른 A+B
15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
Scanner/ System.out.println 말고 BufferedReader/BufferedWriter 사용 !
Scanner/ System.out.println VS BufferedReader/BufferedWriter
<버퍼를 사용하지 않는 입력 : Scanner/ System.out.println >
- 키보드의 입력이 키를 누르는 즉시 프로그램으로 바로 전달됨
<버퍼를 사용하는 입력 : BufferedReader/BufferedWriter >
- 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송함
- 버퍼가 가득 차거나, 개행 문자가 나타나면, 버퍼의 내용을 한 번에 전송함
버퍼에 모아뒀다가 한 번에 전송하는 게 효율적
☼ 버퍼(Buffer)
- 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역
- 입출력 속도 향상을 위해 사용
☼ BufferedReader 사용방법
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int T = Integer.parseInt(br.readLine()); //BufferedReader 타입 고정 : String ➜ Integer.parselnt 통해 int 형 변환
for(int i=0;i<T;i++) {
st = new StringTokenizer(br.readLine()," "); //StringTokenizer 생성과 동시 문자 입력
int a = Integer.parseInt(st.nextToken()); //StringTokenzier 토큰을 반환되는 타입 : String ➜ Integer.parselnt 통해 int 형 변환
int b = Integer.parseInt(st.nextToken());
int sum = a+b;
bw.write(sum+"\n"); // 출력 스트림 출력
}
br.close();
bw.flush(); //버퍼 비우기
bw.close(); //버퍼 닫기
}
}
new InputStreamReader(System.in)
➜ 키보드에서 입력 받기 위해 표준 입력 스트림(System.in)과 InputStreamReader 스트림 객체 연결
BufferedReader br
➜ br에 연결되는 문자입력 버퍼스트림 생성
- 개행문자만 경계로 인식
- readLine() 메서드로 입력
- 입력 받은 데이터 String 고정
- 동기화되어 멀티스레드 환경에서 안전
- 예외 처리 필수 , readLine() 마다 try/catch문으로 감싸주거나 throws IOException을 통해 처리한다.
BufferedWriter bw
➜ bw에 연결되는 문자출력 버퍼스트림 생성
readLine
➜ 스트림으로부터 한 줄을 읽어 문자열로 리턴
StringTokenzier
➜ 우리가 지정한 구분자로 문자열 분리
Integer.parselnt
- String 타입 숫자 ➜ int 타입 숫자 (변환)
- Char At() 과의 차이 ?
🙋 질문 ➜ 🙆
🙋: 위에 작성한 소스코드와 동일하게 이클립스 컴파일했는데 똑같은 오류 반복
구글링을 통해 Project 항목 > Clean 했음에도 불구하고 오류 반복해서
새 프로젝트를 만들어 실행했더니 컴파일 성공했다.
어디에서 왜 오류가 난걸까?
🙆 : 괄호가 짝이 맞는지 살펴보자
📮개인 공부를 위한 공간으로 틀린 부분이 있을 수도 있습니다.📮
문제점 및 수정 사항이 있을 시, 언제든지 댓글로 피드백 주시기 바랍니다.
[참고]
[Java 자바 입출력] BufferedReader/BufferedWriter
[자바 입출력 함수] BufferedReader / BufferWriter BufferedReader/BufferedWriter은 이름처럼 버퍼를 이용해서 읽고 쓰는 함수입니다. 이 함수는 버퍼를 이용하기 때문에 이 함수를 이용하면 입출력의 효율이..
jhnyang.tistory.com
[자바/JAVA] StringTokenizer를 이용해 문자열을 쪼개보자
StringTokenizer StringTokenizer 클래스는 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스입니다. 그렇게 쪼개어진 문자열을 우리는 토큰(token)이라고 부릅니다. StringTokenizer를 사용하기 위
reakwon.tistory.com
[백준] 15552번 : 빠른 A+B - JAVA [자바]
https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다...
st-lab.tistory.com
[JAVA] 백준 15552번 - 빠른 A+B
<코드> import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw..
cocoon1787.tistory.com
BufferedReader, BufferedWriter
1. Scanner - 띄어쓰기와 개행문자를 경계로 하여 입력 값을 인식한다. - 원하는 타입의 입력을 받을 수 있기 때문에 따로 가공할 필요가 없다. - 버퍼 사이즈가 1024 char이기 때문에 많은 입력을 필요
kmkunk.tistory.com
'JAVA' 카테고리의 다른 글
[백준/JAVA] EOF(End Of File) (0) | 2022.06.09 |
---|