Kotlin의 조건문

지니어스현·2022년 3월 20일
0

Kotlin

목록 보기
1/2

요즘 코틀린을 공부하기 위해 백준에 있는 알고리즘을 코틀린으로 다시 풀어보고 있다.
어제는 1단계 문제들을 풀었고, 오늘은 조건문 문제들을 풀고 있다.
2753번 윤년 문제를 풀다가 코틀린의 삼항 연산자에 대해 글로 남겨두고 싶어 쓴다.

Java의 조건문

if문

class Main {
        public static void main(String[] args) {
        final Scanner scanner = new Scanner(System.in);

        int year = scanner.nextInt();
		scanner.close();
        
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            System.out.println(1);
        } else {
            System.out.println(0);
        }
    }
}

삼항 연산자

import java.util.Scanner;

class Main {
        public static void main(String[] args) {
        final Scanner scanner = new Scanner(System.in);
        Main main = new Main();

        System.out.println(main.isLeapYear(scanner.nextInt()));
        scanner.close();
    }
    
    int isLeapYear(int year) {
        return (year %4 == 0 && year %100 != 0 || year %400 == 0) ? 1 : 0;
    }
}

Kotlin의 조건문

Java에는 위처럼 두가지 방법이 있다. 그래서 삼항 연산자를 사용하려고 보니 계속 빨간 줄이 뜨길래 검색을 해보니

그러나 코틀린은 삼항 연산자를 제공하지 않습니다. if와 else가 표현식(expression)이기 때문입니다. 이는 if와 else가 특정 값을 반환한다는 것을 의미합니다. 따라서 삼항 연산자를 사용하지 않고도 간단히 코드를 구성할 수 있습니다.

출처는 여기

아무튼 그래서 꽤 삽질을 하다가 아래 코드를 작성했다.

package com.algorithm.acmicpc.step2

import java.util.*

/**
 * 2753. 윤년
 */
fun main() {

    val scanner = Scanner(System.`in`)

    print(isLeapYear(scanner.nextInt()))
    scanner.close()
}

fun isLeapYear(year: Int): Int {

    return if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) 1 else 0
}

번외. when 구문

Java의 switch~case 문과 동일한 역할이라 생각하면 된다.

package com.algorithm.acmicpc.step2

import java.util.Scanner

/**
 * 9498. 시험 성적
 */
fun main() {

    val scanner = Scanner(System.`in`)

    print(getResult(scanner.nextInt()))
    scanner.close()
}

fun getResult(score: Int): Char {

    return when (score) {
        in 90..100 -> 'A'
        in 80..90 -> 'B'
        in 70..80 -> 'C'
        in 60..70 -> 'D'
        else -> 'F'
    }
}
profile
넓은 바다에서 유영하는 범고래

0개의 댓글