[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