- 알고리즘/백준

백준 1476 날짜계산 코틀린

더모어더베러 2023. 11. 13. 21:22

문제

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

 

1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

 

 

풀이

저는 나머지 연산%을 통해 알고리즘을 구현하려고 하였지만 최대 범위값이 0으로 표현 되는 문제가 있어 코드가 복잡해지는 부작용이 있어 값을 하나씩 증가 하고 범위를 넘어가면 1로 초기화 해주는 방법으로 다시 풀었습니다.

 

 

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter



fun main(args: Array<String>) {

    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))

    // 1 <= e <= 15
    // 1 <= s <= 28
    // 1 <= m <= 19
    var (e,s,m) = br.readLine().split(" ").map { it.toInt() }

    var result = 0
    var flagCheck = true
    var eC = 0
    var sC = 0
    var mC = 0
    while (flagCheck) {
        result++
        eC++
        sC++
        mC++

        if (eC == 16) eC = 1
        if (sC == 29) sC = 1
        if (mC == 20) mC = 1

        if (e==eC && s==sC && m==mC) flagCheck = false
    }

    bw.write(result.toString())
    bw.flush()
    bw.close()
}