윤년에 달 별로 갖는 날짜를 months
에 정의하고, 2016년 1월 1일 금요일을 기준으로
(a-1월까지의 전체 날짜 + b일) % 7
을 계산하여 2016년 a월 b일의 요일을 반환한다.
def solution(a, b):
answer = ''
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
value = sum(month[:a-1]) + b
if value % 7 == 0:
answer = "THU"
elif value % 7 == 1:
answer = "FRI"
elif value % 7 == 2:
answer = "SAT"
elif value % 7 == 3:
answer = "SUN"
elif value % 7 == 4:
answer = "MON"
elif value % 7 == 5:
answer = "TUE"
elif value % 7 == 6:
answer = "WED"
return answer
fun solution(a: Int, b: Int): String {
val month = listOf(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
val sum = (0 until a-1).map { month[it] }.sum() + b
return when(sum%7) {
0 -> "THU"
1 -> "FRI"
2 -> "SAT"
3 -> "SUN"
4 -> "MON"
5 -> "TUE"
6 -> "WED"
else -> ""
}
}
value
를 요일로 변환하는 부분을 개선했다.def solution(a, b):
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED']
return days[(sum(months[:a-1])+b) % 7]
fun solution(a: Int, b: Int): String {
val months = listOf(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
val days = listOf("THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED")
val sum = (0 until a - 1).map { idx ->
months[idx]
}.sum() + b
return days[sum%7]
}
days
) 가독성을 좋게 하자.