본문 바로가기

백준

[백준] [코틀린 Kotlin] 9498번_시험 성적

문제 링크

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

 

9498번: 시험 성적

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

 

백준 9498번 시험 성적 (Kotlin)

 

 

문제

 

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

 

입력

 

첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

 

출력

 

시험 성적을 출력한다.

 

 

예제 입력 1 

 

100

 

예제 출력 1 

 

A

 

 

 

풀이

 

코드1

 

메모리 12144KB

시간 92ms

코드 길이 363B

 

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

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val a = readLine().toInt()
    if (90<= a && a <= 100) println("A")
    else if ( 80 <= a && a < 90) println("B")
    else if (70 <= a && a < 80) println("C")
    else if (60 <= a && a < 70) println("D")
    else println("F")
}

 

코드2

 

메모리 12164KB

시간 88ms

코드 길이 339B

 

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

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val a = readLine().toInt()

    print(
        when {
            a >= 90 -> "A"
            a >= 80 -> "B"
            a >= 70 -> "C"
            a >= 60 -> "D"
            else -> "F"
        }
    )
}

 

 

내 풀이

 

코드1이 처음에 내가 작성한 코드인데 if문을 이용해서 하나하나 조건을 달아 출력하는 방식으로 작성하였다

그리고 다른 사람들의 풀이를 모다가 print문 안에 when을 사용하여 출력하는 방식도 있었다

when은 다른 언어에서의 switch문과 비슷하다고 볼 수 있는데 if문을 사용했을 때보다 훨씬 가독성이 좋다는 것을 느낄 수 있다

다만 when을 사용할 땐 반드시 입력에 대해 하나의 결과가 주어져야 하기 때문에 else를 꼭 지정해주어야 한다!

 

추가로 if문과 when문은 언제 사용하는지에 대해 알아보니

 

if문 -> 범위가 넓고 값을 특정할 수 없는 경우

ex) 연도 데이터: 2020, 2021, 2022 ...

 

when문 -> 범위가 제한되고 값도 특정할 수 있는 경우

ex) 요일 데이터: 월, 화, 수, 목, 금, 토, 일

 

위와 같은 차이점이 있다고 한다

 

또한 이 문제에선 사용되지않았지만 when ( 조건을 검사할 값 ) { } 이렇게도 많이 사용이 된다

이때 if문과의 차이점은 if문은 조건식이 들어가지만 when문은 조건을 검사할 값이 들어간다는 것!!

 

이 문제를 풀면서 if문과 when문의 차이점에 대해 알게되었다

평소에 if문을 자주 사용하고 편해서 습관적으로 if문을 사용하였는데 상황에 따라 알맞은 문법을 사용해야겠다고 느꼈다