본문 바로가기

백준

[백준] [코틀린 Kotlin] 18108번_1998년생인 내가 태국에서는 2541년생?!

문제 링크

https://www.acmicpc.net/problem/18108

 

18108번: 1998년생인 내가 태국에서는 2541년생?!

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국

www.acmicpc.net

 

 

백준 18108번 1998년생인 내가 태국에서는 2541년생?! (Kotlin)

 

 

문제

 

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.

불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

 
 
입력

 

서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)

 
 
출력

 

불기 연도를 서기 연도로 변환한 결과를 출력한다.

 

 

예제 입력 1 

 

2541

 

예제 출력 1 

 

1998

 

 

 

풀이

 

코드1

 

메모리 12140KB

시간 88ms

코드 길이 186B

 

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    var a = readLine().toInt()
    print("${a-543}")
}

 

 

코드2

 

메모리 12360KB

시간 88ms

코드 길이 57B

 

fun main() = print("${(readLine()?.toInt() ?: 0) - 543}")

 

 

내 풀이

 

원래 내가 푼 코드는 코드1로 BufferedReader를 이용해 숫자를 입력받고

입력받은 숫자에서 543을 빼서 출력해주었다

 

문제를 다 풀고 다른 사람들의 코드를 보다가 코드2를 발견했다

입력받은 숫자가 null이 아니면 543을 빼서 출력하고 입력받은 숫자가 null이면 0을 출력하는 코드

코드 길이는 엄청 짧긴하지만 시간은 같고 메모리는 더 많이 사용된다