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문을 삭제시킬 수 있었다.
'Code KATA' 카테고리의 다른 글
Programmers 사과 장수 with Kotlin (1) | 2023.12.04 |
---|---|
Programmers 카드 뭉치 with Kotlin (0) | 2023.12.01 |
Programmers 명예의 전당 with Kotlin (1) | 2023.11.29 |
Programmers 콜라 문제 with Kotlin (1) | 2023.11.28 |
Programmers 푸드 파이트 대회 with Kotlin (0) | 2023.11.27 |