728x90
두 정수를 A,B를 입력 받고, A+B를 출력하는 문제
해결 1. 간단한 처리
package step04_while;
import java.util.Scanner;
public class step04_01 {
public static void main(String[] args) {
// 10952번. A+B-5
Scanner sc = new Scanner(System.in);
while (true){
int A = sc.nextInt();
int B = sc.nextInt();
if(A==0 && B==0) {
sc.close();
break;
}
System.out.println(A+B);
}
}
}
해결 2. 성능 향상을 위한 방법
- Scanner 대신 BufferedReader를 사용한다 (시간 단축)
- BufferedReader는 readLine()을 통해 문자열을 한 줄 단위로 입력받기 때문에 공백이 섞일 수가 있다.
=> 공백을 기준으로 문자열을 분리해줘야 하는데 이 때 StringTokenizer 를 사용
- StringTokenizer의 메서드를 사용해 문자열을 분리하고 꺼내와야 하는데 이 때
.nextToken() 는 문자열을 반환하므로 Integer.parseInt()로 int 형으로 변환한다.
- 출력을 할 때에도 println 보다는 StringBuilder를 사용해 속도를 더 빠르게 해준다.
package step04_while;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class step04_01_2 {
public static void main(String[] args) throws IOException {
// 성능 향상을 위한 방법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
while(true) {
st = new StringTokenizer(br.readLine()," ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
if(A==0 && B==0) {
break;
}
sb.append((A+B)).append('\n');
}
System.out.println(sb);
}
}
확실히 성능 차이가 있다는 걸 눈으로 확인할 수 있다.
728x90
'알고리즘 문제풀이 > Beakjoon' 카테고리의 다른 글
[자바 알고리즘] String - 문자열 속에서 문자 찾기 : 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아보기 (0) | 2022.01.22 |
---|---|
코딩 문제 사이트 백준 사용법, 주의사항 (알고리즘, 코딩 테스트 연습) (0) | 2021.06.30 |
[자바/백준] 단계별 문제 풀이 - for문 (0) | 2021.06.22 |
[자바/백준] 단계별 문제 풀이 - for문 (0) | 2021.06.20 |
[자바/백준] 단계별 문제 풀이 - if문 (0) | 2021.06.19 |