-
[프로그래머스] 2016년(Python)Algorithm PS👩🏻💻/Implementation 2023. 5. 23. 15:07
1. 2016년
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12901
개념 & 문법
- 개념
1. 윤년
- 윤년: 유일하게 2월에 2/29이 추가되어 1년이 366일이 되는 것을 의미한다.
- 윤년의 조건
- 4로 나누어 떨어지면 -> 윤년
- 4로 나누어 떨어져도 100으로 나누어 떨어지면 -> 평년
- 100으로 나누어 떨어져도 400으로 나누어 떨어지면 -> 윤년
- [날수를 이용하여 요일 구하기]
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=itinstructor&logNo=100201553237- 1월 1일의 요일을 기준으로 원하는 월, 요일의 날 수를 계산하여
7로 나누어 나머지가 1인 경우 1월 1일 요일과 같다는 개념으로 한다. - Ex. *
1/1 금요일 -> (날 수 % 7 == 1) 나머지가 1인 경우 금요일
1/2 토요일 -> 나머지가 2인 경우 토요일
1/3 일요일 -> 나머지가 3인 경우 일요일
1/4 월요일 -> 나머지가 4인 경우 월요일
1/5 화요일 -> 나머지가 5인 경우 화요일
1/6 수요일 -> 나머지가 6인 경우 수요일
1/7 목요일 -> 나머지가 0인 경우 목요일
1/8 금요일 -> (8 % 7 = 1) 나머지가 1이므로 금요일
. . .
2/1 -> 날 수 : 31일 + 1일 -> (32 % 7 = 4) -> 월요일
- 1월 1일의 요일을 기준으로 원하는 월, 요일의 날 수를 계산하여
- 문법
- list의 range를 설정하여 sum 함수 적용 가능
- sum(list[0:3])
- [another solution]
- datetime 클래스의 weekday 함수 사용
#[출처]https://docs.python.org/ko/3/library/datetime.html?highlight=weekday] #date.weekday() : 정수로 요일을 반환. 월요일은 0, 일요일은 6 #date.isoweekday() : 월요일이 1, 일요일이 7 from datetime import date date(2002, 12, 4).weekday() == 2 #수요일 date(2002, 12, 4).isoweekday() == 3 #수요일
- datetime 클래스의 weekday 함수 사용
코드
def solution(a, b): answer = '' months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] #윤년 - 달의 일 수 days = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"] #7로 나누어 나머지가 1이면 1/1에 해당하는 요일 date = sum(months[0:a-1]) + b answer = days[(date % 7)] return answer
후기
윤년 문제는 입문자에게 항상 나오는 문제 같다.
특히, 여기선 언급이 없었지만 4, 100, 400의 문제 설명을 통해 조건문을 작성할 수 있느냐 등이 예시이다.'Algorithm PS👩🏻💻 > Implementation' 카테고리의 다른 글
[백준]14500번: 테트로미노(Python) (0) 2023.08.11 [백준] 2469번: 사다리 타기(Python) (0) 2023.06.23 [백준] 14719번: 빗물 (Python) (0) 2023.05.14 [백준] 16926번: 배열 돌리기1(Python) (1) 2023.05.10 [백준] 17276번: 배열 돌리기 (Python) (1) 2023.05.08