[자바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
2
3
4
5
6
7
8
9
10
11
12
13
public class quizCodeup1014 {
public static void main(String[] args) throws IOException {

// 풀이1 : char로 받아서 출력
// 메모리 12480 시간 93
Scanner sc = new Scanner(System.in);
char x = sc.next().charAt(0);
char y = sc.next().charAt(0);

sc.close();
System.out.printf("%c %c", y, x);
}
}

풀이2 : Scanner + String 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
public class quizCodeup1014 {
public static void main(String[] args) throws IOException {

// 풀이2 : String으로 받아서 출력
// 메모리 12376 시간 96

Scanner sc = new Scanner(System.in);
String x = sc.next();
String y = sc.next();
sc.close();
System.out.println(y+" "+x);
}
}

풀이3 : BufferedReader + StringTokenizer 사용

1
2
3
4
5
6
7
8
9
10
11
public class quizCodeup1014 {
public static void main(String[] args) throws IOException {

// 풀이3 : BufferedReader사용
// 메모리 :11140 시간:66
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String[] anz = {st.nextToken(), st.nextToken()};
System.out.println(anz[1]+" "+anz[0]);
}
}

코드 비교

Scanner + char 사용 Scanner + String 사용 BufferedReader + StringTokenizer 사용
수행시간 93 ms 96 ms 66 ms
메모리 12480 kb 12376 kb 11140 kb

배운 지식

알고리즘 최적화를 위해 Scanner보단 BufferedReader가 좋다.

https://studywithus.tistory.com/61

원리 경계
Scanner 사용자 요청시 데이터 매번 읽어옴 space, enter 모두 경계로 인식
BufferedReader 일정량을 한 번에 읽어온 후 버퍼에 보관 -> 사용자 요청시 버퍼에서 읽어옴 enter만 경계로 인식
  • BufferedReader 특징
    1. 입력값 String으로 고정이기에 타입변환 필요함
    2. 자체적으로 Exception처리된 Scanner와 달리 따로 IOException 처리해야함
    3. 버퍼에 저장되는 데이터에 공란을 기준으로 여러 값이 있는 경우 파싱 필수 -> StringTokenizer 사용

참고

다른 문제 풀이가 보고싶다면?

#Codeup100

[자바JAVA]1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명), Scanner vs BufferedReader 차이

https://sowon-dev.github.io/2020/12/26/201227al-c1014/

Author

sowon-dev

Posted on

2020-12-27

Updated on

2026-10-13

Licensed under

CC BY 4.0

댓글