Joshbla 2023. 3. 23. 01:22

문제

 

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

 

9498번: 시험 성적

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

www.acmicpc.net


풀이

Java

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        int A = sc.nextInt();
        if(89< A){
        	System.out.println("A"); 
        } else if (79<A) {
        	System.out.println("B"); 
        } else if (69<A) {
        	System.out.println("C"); 
        } else if (59<A) {
        	System.out.println("D"); 
        } else {       	
        	System.out.println("F"); 
        }
    }
}

Kotlin

import java.util.Scanner

fun main() {
    val sc: Scanner = Scanner(System.`in`)
    val grade = sc.nextInt()
    var result = when {
        grade >= 90 -> "A"
        grade >= 80 -> "B"
        grade >= 70 -> "C"
        grade >= 60 -> "D"
        else -> "F"
    }
    println(result)
}

What's new ?

  • is라고하는 연산자가 있다. 좌측과 우측의 자료형이 같으면 
  • 자바에서 switch - case 문은 코틀린에서 when으로 대체할 수 있다. 심지어 더 편리하다.
  • switch문에서는 비교연산을 조건으로 할 수 없다. 그러나 when에서는 위와 같이 비교연산을 조건으로 할 수 있다.
    *주의 when을 사용할 때 모든 경우에 대해 조건을 걸지 않거나, else를 사용하지 않으면 에러가 발생한다.
  • Any라는 최상위 자료형을 사용하면 아래와 같이 사용할 수 도있다.
fun main() {
    check(1)
    check(30L)
    check("김치왕뚜껑")
    check(false)
}
fun check(a: Any) {
    var result = when(a) {
        1 -> "1이다."
        is Long -> "Long 타입이다."
        !is String -> "String 타입이아니다.
        else -> "나머지"
    }
    println(result)
}

/**출력
1이다.
Long 타입이다.
나머지
String 타입이아니다.
*/