728x90
✍️풀이방식
1. scanner 사용해서 푸는 방법
2. BufferedReader 사용해서 푸는 방법
이때까지 입출력을 받을 땐 1번 방법인 Scanner 방식을 많이 사용했었는데 코테에선 빠르게 입력 받는 것이 중요하기 때문에 보통 BufferedReader 방식을 사용해봤다
BufferedReader
- 버퍼는 스트림과 프로그램 간에 데이터를 효율적으로 전송하려고 사용하는 메모리
- 입출력 장치와 프로그램 간 동작 속도가 크게 차이가 날 때 버퍼를 사용하면 매우 효율적
- readLine은 BufferedReader 클래스에서 제공하는 메서드로, 입력 스트림으로부터 한 줄의 텍스트를 읽어오는 기능을 한다 ( readLine() 은 한 행을 읽어오고, read() 는 한 문자만 읽어온다)
import java.io.*;
import java.util.*;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readline(); // 문자열 입력 받기
String[] input = br.readline().split(" "); // 공백으로 구분된 문자 입력받기
//문자열로 받고 split메소드를 이용해서 공백을 기준으로 잘라서 활용.
StringTokenizer st = new StringTokenizer(br.readLine()); // split보다 빠른 방식
String A = st.nextToken();
💡 BufferedReader의 readLine() 메서드는 IOException을 발생시킬 수 있기 때문에, 이를 처리하기 위해 예외 처리를 추가해야한다
예외 처리는 try-catch 블록을 사용하여 처리하거나 메서드 시그니처에 throws IOException을 추가하여 예외를 선언할 수 있다
StringTokenizer 사용법
- 객체 생성 할 때 StringTokenizer( "문자열" , 구분자 ); 을 해주면 된다
- 구분된 변수를 꺼낼 때는 차례대로 nextToken(); 을 해주면 문자열을 반환해준다
- 이때 반환시킨 문자열은 반환됨과 동시에 해당 객체에서 사라지게 된다
🖥️문제풀이
1번 Scanner 사용
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int res= a+b;
System.out.println(res);
}
}
2번 BufferedReader 사용
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
StringTokenizer st = new StringTokenizer(input, " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println(a + b);
}
}
☑️실행결과
BufferedReader를 사용한 방식이 코드가 길어도 실행시간이 빠른 걸 확인 할 수 있었다
728x90
'✍️ Algortihm > Java' 카테고리의 다른 글
[백준] 11659번: 구간 합 구하기 4 - JAVA (0) | 2024.11.10 |
---|---|
자바 코딩 테스트 정리 (1) (0) | 2024.08.28 |
[백준] 1546번: 평균 - JAVA (0) | 2024.08.14 |
[백준] 11720번: 숫자의 합 - JAVA (1) | 2024.08.14 |
[백준] 2588번: 곱셈 - JAVA (0) | 2024.06.11 |