[Level 1] 프로그래머스 2016년 Kotlin 풀이
프로그래머스 “2016년” Kotlin 풀이
문제 소개
이번 문제는 병신년(丙申年) 문제입니다!

월, 일을 입력받아서 2016년의 무슨 요일인지를 출력하는 문제군요!
문제풀이
풀이도 매우 간단합니다.
우선 2016년의 총 날짜들을 배열로 담아줍니다.
이때 윤년이기 때문에 2월은 29일로 칩니다!
1 | val year2016 = listOf(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) |
그 다음은 월화수목금토일을 문제에서 요구하는 형태로 배열에 담아줍니다.
2016년 1월 1일은 금요일이어서 0번째에 FRI를 넣을 것 같지만
이때 zero-based-indexing을 고려해서 저희는 배열의 1번째에 FRI를 담아줍니다!
1 | val dayOfWeek = listOf("THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED") |
이제 할 일은 간단합니다.
5월 24일이라면 1월 + 2월 + 3월 + 4월 + 24일이므로
1월 부터 4월까지의 총 날짜들을 모두 더한 후 24를 더해주면 지금까지가 2016/01/01로 부터 몇일인가를 알 수 있겠죠!
저는 range.map을 이용하여 구현해봤습니다.
1 | val totalDay = (0 until a - 1).map { year2016[it] }.sum() + b |
이제 totalDay를 7로 나눈 나머지로 datOfWeek에서 꺼내오면 끝!
1 | dayOfWeek[totalDay % 7] |
정답 코드
1 | class Solution { |
요일 계산을 직접 구현해본건 처음이라 재밌었습니다!
import java.util.Calendar 필요
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges