출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

 

문제는 생긴거는 비교적 쉽게 생겼다. 하지만 생각해보니 5월 24일 무슨 요일인지 알기 위한 방법을 고안해내야 했었고, 내가 생각해낸 방법은 5월 24일이 2016년도에서 몇번째일인지 (예: 144일, 145일 등)를 알 수 있으면, 일주일 단위로 나눠서 금,토,일,월,화,수,목 등을 나머지로 확인할 수 있는 것이다. 다음과 같이 코드를 짜봤다:

def solution(a, b):
    
    answer = ''
    
    month_list = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
    months_before = month_list[:a-1]
    sum_days = 0
    
    for i in range(len(months_before)):
        sum_days += months_before[i]
    
    sum_days += b
    
    remain = sum_days % 7
    if remain == 1:
        answer = 'FRI'
    elif remain == 2:
        answer = 'SAT'
    elif remain == 3:
        answer = 'SUN'
    elif remain == 4:
        answer = 'MON'
    elif remain == 5:
        answer = 'TUE'
    elif remain == 6:
        answer = 'WED'
    elif remain == 0:
        answer = 'THU'
    
    return answer

 

생각보다 복잡하지만 잘 된다. List를 사용해서 각 월별로 있는 총 일수를 써주고, 입력받은 달이 5월이면 1,2,3,4월의 총 일수를 더해준다. 그 후 입력받은 일수 (b값)을 더해주고, 이 값을 7로 나누어 나머지에 따라 요일을 선택해준다.

 

 

※ 다른 사람의 풀이

def solution(a,b):
    months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    days = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
    answer = days[(sum(months[:a-1])+b-1)%7]

    return answer

다른 사람의 풀이도 비슷하긴 했다. 다만 더욱 더 간결하게 표현했다. if문을 사용하지 않고 단순히 month[:a-1]의 합과 

b-1의 합을 통해 요일을 구했다