728x90
반응형
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12901
풀이 과정 :
처음엔 하나하나 이렇게 다 리스트에 넣었다.
def solution(a, b):
day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
months = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31]
answer = sum([months[i] for i in range(a-1)]) % 7
return day[answer]
# 코드 실행은 성공하지만 제출 후 채점하기는 틀린다.. 왜 일까 ?
day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
months = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31]
answer = (sum([months[i] for i in range(a-1)]) + b) % 7
return day[answer]
b를 생각을 안 하고 있었다. >> 이것도 아니다
정답 코드 : 요일 시작이 금요일이고 1월 1일 금요일 하루 계산을 했기 때문에 1 빼준다.
def solution(a, b):
day = ["FRI","SAT","SUN","MON","TUE","WED","THU"]
months = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31]
answer = (sum([months[i] for i in range(a - 1)]) + b - 1) % 7
return day[answer]
다른 분 풀이 1: 이렇게 푼 사람도 있다
def getDayName(a,b):
answer = ""
if a>=2:
b+=31
if a>=3:
b+=29#2월
if a>=4:
b+=31#3월
if a>=5:
b+=30#4월
if a>=6:
b+=31#5월
if a>=7:
b+=30#6월
if a>=8:
b+=31#7월
if a>=9:
b+=31#8월
if a>=10:
b+=30#9월
if a>=11:
b+=31#10월
if a==12:
b+=30#11월
b=b%7
if b==1:answer="FRI"
elif b==2:answer="SAT"
elif b==3:answer="SUN"
elif b==4:answer="MON"
elif b==5:answer="TUE"
elif b==6:answer="WED"
else:answer="THU"
return answer
다른분 풀이 2: 함수활용 하기
import datetime
def getDayName(a,b):
t = 'MON TUE WED THU FRI SAT SUN'.split()
return t[datetime.datetime(2016, a, b).weekday()]
#아래 코드는 테스트를 위한 출력 코드입니다.
print(getDayName(5,24))
반응형
댓글