[자바JAVA]1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명), Scanner vs BufferedReader 차이
💡 핵심 요약 (TL;DR)
'1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명), Scanner vs BufferedReader 차이' 알고리즘 문제의 요구사항을 분석하고 최적의 자료구조와 연산 방식을 적용해 구현한 풀이다. 수행시간 | 93 ms | 96 ms | 66 ms을 확인했다.
문제 1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명)
2개의 문자(ASCII CODE)를 입력받아서 순서를 바꿔 출력해보자.
참고
char x, y;
scanf(“%c %c”, &x, &y);
printf(“%c %c”, y, x); //출력되는 순서를 작성와 같은 방법으로 해결할 수 있다.
- 입력예시
1 | A b |
- 출력예시
1 | b A |
풀이1 : Scanner + char 사용
1 | public class quizCodeup1014 { |
풀이2 : Scanner + String 사용
1 | public class quizCodeup1014 { |
풀이3 : BufferedReader + StringTokenizer 사용
1 | public class quizCodeup1014 { |
코드 비교
| Scanner + char 사용 | Scanner + String 사용 | BufferedReader + StringTokenizer 사용 | |
|---|---|---|---|
| 수행시간 | 93 ms | 96 ms | 66 ms |
| 메모리 | 12480 kb | 12376 kb | 11140 kb |
배운 지식
알고리즘 최적화를 위해 Scanner보단 BufferedReader가 좋다.
![]()
| 원리 | 경계 | |
|---|---|---|
| Scanner | 사용자 요청시 데이터 매번 읽어옴 | space, enter 모두 경계로 인식 |
| BufferedReader | 일정량을 한 번에 읽어온 후 버퍼에 보관 -> 사용자 요청시 버퍼에서 읽어옴 | enter만 경계로 인식 |
- BufferedReader 특징
- 입력값 String으로 고정이기에 타입변환 필요함
- 자체적으로 Exception처리된 Scanner와 달리 따로 IOException 처리해야함
- 버퍼에 저장되는 데이터에 공란을 기준으로 여러 값이 있는 경우 파싱 필수 -> StringTokenizer 사용
참고
- https://www.java67.com/2016/06/5-difference-between-bufferedreader-and-scanner-in-java.html
- https://sjs2215.tistory.com/93
- https://studywithus.tistory.com/61
다른 문제 풀이가 보고싶다면?
[자바JAVA]1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명), Scanner vs BufferedReader 차이