코딩 (독학)/★ Algorithm

[백준] 2884번 : 알람 시계 - Kotlin [코틀린]

짱득이 2022. 4. 11. 15:16
300x250
반응형



  • 문제


  • 알고리즘

1. 상근이가 설정한 알람시간을 45분 앞당겨 출력한다.

2. Scanner로부터 입력받은 Minute가 45보다 작으면 Hour - 1을 하고, Minute는 60-(45-minute)하여 계산하라.

3. Minute가 45보다 크다면 그대로 Minute-45를 한다.

4. Hour가 0보다 작다면 H=23하여 23시로 설정한다.


  • 풀이 

 

- 1번 방법 (가장 일반적인 방법)

 

import java.util.*

fun main() : Unit = with(Scanner(System.`in`)) {
    var H = nextInt()
    var M = nextInt()

    if(M<45) {
        H--
        M = 60-(45-M)
        
        if(H<0) {
            H=23
        }
        println("${H} ${M}")
    } else {
        println("${H} ${M}")
    }
    
}

가장 보편적으로 사용 했을듯한 단순한 방법으로, 조건문 if else만을 사용하여 나타내었다.

계산하기 편하도록 M을 정수에서도 양수 범위 내로 표현하려고 노력하였다.

M을 계산하고, H가 -- 될 경우 H는 23시로 설정하였고, 그대로 출력만 해 주었다.


- 2번 방법

import java.time.LocalTime
import java.util.*

fun main() = with(Scanner(System.`in`)) {
	val H = nextInt()
    val M = nextInt()
    
    val time = Local.Time.of(H, M).minusMinutes(45)
    
    println("${time.H} ${time.M}")
}

 

시간(시, 분, 초)를 다루기에 아주 유용한 JAVA의 LocalTime 클래스를 사용한 방법이다.

 

클래스를 사용하기 위해 객체로 time을 생성 해 주었다.

시간은 입력받은 H와 M을 그대로 넣어 주었고, LocalTime 클래스의 메소드인 minusMinutes를 이용하여 -45분 해 주었다. (역으로 plusMinutes 또는 minusHours, plusHours 등도 가능.)

 

계산된 값을 println으로 시간과 분을 Split하여 출력하였다.

 

 

출처 : https://shrimp-burger.tistory.com/123


  • 제출 결과 및 정리

처참하다..ㅎ

728x90
반응형