문제
내 코드
def solution(a, b):
result = ''
ssum = 0
if (a == 1):
ssum = b
elif (a == 2):
ssum = b + 31
elif (a == 3):
ssum = b + 31 + 29
elif (a == 4):
ssum = b + 31 + 29 + 31
elif (a == 5):
ssum = b + 31 + 29 + 31 + 30
elif (a == 6):
ssum = b + 31 + 29 + 31 + 30 + 31
elif (a == 7):
ssum = b + 31 + 29 + 31 + 30 + 31 + 30
elif (a == 8):
ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31
elif (a == 9):
ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31
elif (a == 10):
ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30
elif (a == 11):
ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31
elif (a == 12):
ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30
if (ssum % 7 == 0):
result = "THU"
elif (ssum % 7 == 1):
result = "FRI"
elif (ssum % 7 == 2):
result = "SAT"
elif (ssum % 7 == 3):
result = "SUN"
elif (ssum % 7 == 4):
result = "MON"
elif (ssum % 7 == 5):
result = "TUE"
else:
result = "WED"
return result
풀이
- ssum이라는 변수를 선언해서, 누적 월/일을 더해준다.
- if 문을 사용해서, 전 월까지의 합과 일을 더해준다.
- 7로 나눈 나머지에 따라 요일을 반환한다.
효율적인 코드
def getDayName(a,b):
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
return days[(sum(months[:a-1])+b-1)%7]
피드백
- 다 더하는 것 말고 다른 방법이 있을줄 알았는데, 역시 있었다. 리스트를 만든 후 전 월까지 더해주면 된다.
- 요일도 마찬가지.
- 전 월까지만 더해준건 당 월은 아직 끝나지 않았기 때문
- 일에서 1을 빼준건 days 인덱스는 0부터 시작하기 때문