[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! - JAVA [자바]
https://www.acmicpc.net/problem/18108
- 문제
간단한 수리 추론 문제다!
- 알고리즘 [접근 방법]
문제 자체는 어렵지 않게 풀었으리라 본다.
그래도 설명하자면, 불기 연도가 주어질 때 이를 서기 연도로 바꾸어 출력하라는 것이다.
그럼 불기를 어떻게 알고 서기로 바꾸어야 할까?
문제속에 답이 있듯, 1998년생(서기)의 경우 불기로는 2541년생이라는 것이다. 즉, 서기와 불기는 543년 차이가 있음을 알 수 있다.
그러면 불기가 주어졌을 때, 주어진 불기에 543년을 빼준 값. 이 값이 서기가 되겠다.
- 2가지 방법을 사용하여 풀이한다.
알고리즘 풀이에서의 대표적인 입력 방식 두 가지가 있다. Scanner와 BufferedReader인데, 각 입력 방식을 통해 성능을 비교해보고자 한다.
1. Scanner
2. BufferedReader
- 풀이
- 방법 1 : [Scanner]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int year = in.nextInt();
System.out.println(year - 543);
}
}
크게 설명할 것이 없는 가장 기본적인 방법이라 할 수 있겠다..
- 방법 2 : [BufferedReader]
입력 방법을 Scanner 대신 BufferedReader 을 사용하여 풀이하는 방법이다. 단, BufferedReader 는 한 줄 단위로 읽은 뒤 문자열로 반환하기 때문에 주어지는 입력에 대한 문자열을 정수로 변환해주는 과정이 필요하다.
이를 위해서는 Integer 클래스의 parseInt()라는 메소드를 사용하면 되는데, 숫자형식의 문자열에 대해 정수형으로 반환해주는 역할을 한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine(); // 한 줄을 읽고 문자열로 반환함
int year = Integer.parseInt(s); // 반환 된 문자열을 정수로 바꿔줌
System.out.println(year - 543);
}
}
위와 같이 풀 수 있다.
- 성능
채점 번호 : 44791799 - 방법 2 : BufferedReader
채점 번호 : 44791790 - 방법 1 : Scanner
- 정리
이 번 문제 또한 어려운 점은 없었을 것이다. 위 처럼 두 가지 입력 방식을 보여준 이유는 앞으로 입력 방식에서 BufferedReader 을 사용하게 되는 일이 많을 것이라 이렇게 보여드린 것이다.
위 결과를 보면 Scanner보다 BufferedReader가 과정이 하나 더 거쳐감에도 빠른데, 이는 Scanner가 입력을 읽어들이는 과정에서 정규식 검사가 상당히 오래걸리기 때문이다. 이러한 이유로 대개 자바로 알고리즘을 푸는 많은 분들의 경우 BufferedReader을 사용하여 입력을 읽는다.
혹시 어렵거나 이해가 되지 않은 부분이 있다면 언제든 댓글 남겨주시면 최대한 빠르게 답변드리겠다.
'JAVA - 백준 [BAEK JOON] > 입출력과 사칙연산' 카테고리의 다른 글
[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바] (6) | 2022.09.06 |
---|---|
[백준] 10926번 : ??! - JAVA [자바] (0) | 2022.06.17 |
[백준] 25083번 : 새싹 - JAVA [자바] (2) | 2022.05.07 |
[백준] 2588번 : 곱셈 - JAVA [자바] (15) | 2020.02.09 |
[백준] 10430 번 : 나머지 - JAVA [자바] (6) | 2020.02.09 |