class Solution {
    fun solution(a: Int, b: Int): String {
        var answer = ""
        var totalDay:Int = b
        
        for(month in 1 until a) {
            when(month) {
                1,3,5,7,8,10,12 -> totalDay += 31
                2 -> totalDay += 29
                4,6,9,11 -> totalDay += 30
            }
        }
        when(totalDay % 7) {
            1 -> answer = "FRI"
            2 -> answer = "SAT"
            3 -> answer = "SUN"
            4 -> answer = "MON"
            5 -> answer = "TUE"
            6 -> answer = "WED"
            else -> answer = "THU"
        }
        return answer
    }
}

 

로직은 어렵지 않은 문제였는데 for문에서 a 해당 월은 빼고 계산하기 위해서 ..  이 아닌 until 을 썼어야 했는데 이 부분을 늦게 눈치챘다.

 

for 문으로 1월부터 a월 전까지 반복을 돌리고 when 문으로 각 월의 요일 수를 더해줬다. totalDay에 이미 b 값이 들어가 있기에 또 더해줄 필요는 없게 했다.

그리고 총 요일 수를 7로 나머지 계산을 해주면 쉽게 요일 수를 알아낼 수 있다. 금요일이 1일이니 totalDay % 7이 1이면 금요일 이런식으로 계산한다.

 

지금 생각해보면서 조금 아쉬운건 코드량을 더 줄일 수 있었다.

val whatDay = listOf("FRI","SAT","SUN","MON","TUE","WED","THU")

answer = whatDay[totalDay%7]

 

이런 식으로 when문을 삭제시킬 수 있었다.

+ Recent posts