https://programmers.co.kr/learn/courses/30/lessons/12901
문제
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
제한 조건- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
발상
윤년과 그 해의 요일이 모두 주어진 문제이다.
달력 문제는 윤년계산을 포함하여 수십, 수백년 후까지 계산하는 문제가 나오기도 하는데 경시대회가 아니면 수학적이고 다소 지엽적인 문제는 코딩테스트에서 출제되지 않을거라 생각하고 간단히 그 해의 월별 날짜와 요일 배열을 만들어 경과된 일수를 더해서 구하기로 하였다.
의사코드
1. 초기값 세팅(월별 날짜, 반환할 요일 배열)
2. 주어진 날짜를 바탕으로 2016/1/1부터 경과된 일수 계산
3. 7로 나누어 요일 비교
4. 요일값 반환
개선
다른사람들이 제출한 답을 보니 캘린더 함수를 사용하는 것도 있었는데, 국가별로 날짜가 다르기 때문에 국가코드도 설정하고 하는 부분이 다소 지엽적이라고 생각하였다.
'IT > Algorithm' 카테고리의 다른 글
[Programmers] 같은 숫자는 싫어 (0) | 2022.07.04 |
---|---|
[Programmers] 가운데 글자 가져오기 (0) | 2022.07.04 |
[Programmers] 모의고사 (0) | 2022.07.02 |
[Programmers] 키패드 누르기 (0) | 2022.07.02 |
[LeetCode] 773. Sliding Puzzle (0) | 2022.06.25 |