문제 링크
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문을 사용하였는데 상황에 따라 알맞은 문법을 사용해야겠다고 느꼈다
'백준' 카테고리의 다른 글
[백준] [코틀린 Kotlin] 14681_사분면 고르기 (0) | 2023.09.04 |
---|---|
[백준] [코틀린 Kotlin] 2753번_윤년 (0) | 2023.09.04 |
[백준] [코틀린 Kotlin] 1330번_두 수 비교하기 (0) | 2023.09.03 |
[백준] [코틀린 Kotlin] 10172번_개 (0) | 2023.09.02 |
[백준] [코틀린 Kotlin] 10171번_고양이 (0) | 2023.09.02 |