티스토리 뷰
백준 문제 보기
두 가지 방법을 이용하여 풀어보겠다.
자바에서 입력을 받는 방식은 크게 두 가지인데,
Scanner와 BufferedReader이다.
흔히 학교에서 (전공생의 경우) Scanner를 이용하여 예제를 많이 풀어보았을텐데,
속도는 BufferedReader가 훨씬 빠르다.
그래서 BufferedReader를 이용하여 두 가지 방식으로 문제를 풀었다.
첫 번째 풀이
먼저 코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Q10952 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true) {
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
if(A==0 && B==0) {
break;
}
System.out.println(A+B);
}
}
}
while 단계의 문제이기 때문에 while문을 사용했고,
BufferedReader로 값을 입력받은 다음,
StringTokenizer를 이용하여 A와 B를 분리해줬다.
현재 while문의 조건이 true이기 때문에
if문으로 조건식을 넣어 A==0&&B==0일 때
while문을 빠져나올 수 있도록 설계했다.
또한 System.out.println(A+B);를 이용해 값을 출력해줬다.
두 번째 풀이
두 번재로 BufferedReader에 StringBuilder로 출력해 풀어보았다.
먼저 코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Q10952 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true) {
StringTokenizer 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);
sb.append("\n");
}
System.out.println(sb);
}
}
StringBuilder sb = new StringBuilder();로 StringBuilder 객체를 생성하고
sb.append(A+B);를 통해 값을 추가하였다.
결론적으로 System.out.println(sb); 를 통해 한 번만 출력하므로
예제의 경우 while문안에서 반복 횟수가 적어 효과가 미미하지만
반복 횟수가 많아진다면 충분히 효과가 있을 것이라 생각된다.
실행 결과
두 방법의 결과는 다음과 같다.
위가 방법 1의 결과이고,
아래가 방법 2의 결과이다.
짧은 예제에도 충분히 출력을 한 번만 하는 코드의 효과는 위와 같이 확실하다!
이 문제는 별다른 어려움 없이 해결할 수 있는 문제였다.
문제를 보다 이해가 안되거나 설명이 이상한 부분이 있으면 댓글을 활용해주길 바란다.
'코딩테스트 > 백준 자바' 카테고리의 다른 글
[코딩테스트] 백준 자바 8958번 (0) | 2022.03.21 |
---|---|
[코딩테스트] 백준 자바 1546번 및 내가 문제를 푸는 방식 (0) | 2022.03.18 |
[코딩테스트] 백준 자바 3052번 (0) | 2022.03.18 |
[코딩테스트] 백준 자바 10818번 (0) | 2022.03.14 |
[코딩테스트] 백준 자바 10951번 (0) | 2022.03.09 |
- Total
- Today
- Yesterday
- JPA
- BAEKJOON
- 해커랭크 챌린지
- 자바
- stack
- 백준
- 해커랭크
- 코드
- hackerrank
- 챌린지
- 정보처리산업기사 공부법
- challenges
- 정보처리 산업기사
- hackerrank challenges
- 해커랭크 자바 챌린지
- 그리디
- 소스코드
- 디버깅
- 22 정보처리 산업기사
- 22 정보처리산업기사
- queue
- Java
- 해커랭크 자바
- 자바의 정석
- 개발자
- 정보처리산업기사
- LinkedList
- 강의
- ORM
- 풀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |