[BaekJoon] 18108번 - 1998년생인 내가 태국에서는 2541년생?! (java)
1. 문제
👉 문제 바로가기
- 조건
시간 제한 | 메모리 제한 |
---|---|
1초 | 1024MB |
- 문제
ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.
불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.
- 입력
서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)
- 출력
불기 연도를 서기 연도로 변환한 결과를 출력한다.
- 예제
입력 | 출력 |
---|---|
2541 | 1998 |
2. 풀이
문제 자체는 어렵지 않지만 불기를 어떻게 서기로 바꿀까?
문제 속에 답이 있다!
예제를 보면 불기 연도가 2541인 경우, 서기 연도가 1998년이다.
즉, 불기와 서기는 543년
차이가 있음을 알 수 있다.
불기를 입력했을 때, 그 입력값에서 543을 뺀 값이 서기가 된다.
2가지 입력 방식으로 결과를 출력하고자 한다.
- Scanner 클래스 사용
- BufferedReader 클래스 사용
- 1. Scanner 클래스 사용
import java.util.Scanner;
public class Main{
public static void main(String[] args){
//Scanner 객체 생성
Scanner sc = new Scanner(System.in);
int dif = 2541-1998;
int A = sc.nextInt();
System.out.println(A - dif);
}
}
위와같이 객체를 생성할 때, Scanner(System.in) 에서
System.in
은 입력한 값을Byte 단위
로 읽는 것을 뜻한다.
- 2. BufferedReader 클래스 사용
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));
int dif = 2541-1998;
int A = Integer.parseInt(br.readLine());
System.out.println(A - dif);
}
}
BufferedReader
는 입력값을 한 줄로 읽은 후문자열로 반환
한다.
그래서 int형 변수에 값을 저장하려면int형으로 형 변환
을 해줘야한다.
Integer 클래스의parseInt()
라는 메소드를 사용하면 되는데, 숫자형식의 문자열을 정수형으로 반환해주는 역할을 한다.
BufferedReader 클래스
에 대해 더 알아보고 싶으면 여기를 클릭하면 된다.3. Scanner VS BufferedReader 성능 비교
입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.
관련 페이지
Leave a comment