https://school.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일같은 날짜는 주어지지 않습니다)
이전에 풀었던 문제의 두번째 복습, 이전에는 datetime라이브러리를 사용했지만 이번에는 사용하지 않고 해결해보려고 한다.
def solution(a, b):
days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
return days
가장 먼저 요일에 대한 값을 출력하기 위해서 요일 리스트를 만들어주었다.
def solution(a, b):
days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
date = 0
return days
다음으로는 월별 날짜의 일수를 리스트로 만들었다.
def solution(a, b):
days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
date = 0
for i in range(a-1):
date += month[i]
date += b+3
return days
그리고 주어진 날짜의 일수를 계산해주었다. 3을 더한 이유는 시작 날짜와 리스트를 일치시켜주기 위함이다.
def solution(a, b):
days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
date = 0
for i in range(a-1):
date += month[i]
date += b+3
return days[date % 7]
마지막으로 해당 일수를 7(요일의 수)로 나눈 나머지와 요일 리스트에 일치하는 값을 출력하면 된다.
좋은 코드는 당연히 아니지만 라이브러리를 사용하지 않는다면 이렇게도 풀 수 있다 정도로만 알아두면 될것같다.
import datetime
def solution(a, b):
days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
date = datetime.date(2016, a, b)
w_n = date.weekday()
answer = days[w_n]
return answer
'코딩일기' 카테고리의 다른 글
SQL 코드카타 120 - Fix Names in a Table (0) | 2024.07.14 |
---|---|
SQL 코드카타 119 - Department Top Three Salaries (3) | 2024.07.14 |
SQL 코드카타 118 - Investments in 2016 (0) | 2024.07.12 |
SQL 코드카타 117 - Friend Requests II: Who Has the Most Friends (0) | 2024.07.12 |
SQL 코드카타 116 - Restaurant Growth (0) | 2024.07.12 |