코딩테스트/프로그래머스

[프로그래머스] [Level 1] 2016년

박소민 2022. 3. 8. 01:44
문제) 2016년
 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

 

  • 내 풀이
def solution(a, b):
    day=[ 'FRI','SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
    list_a=[1,3,5,7,8,10,12] #31일을 가진 달
    days=0 #1월 1일과의 일수 차
    while a>=2:
        days+=b
        a-=1
        if a==2:
            b=29 #윤년: 2/29일을 둔 해
        else:
            if a in list_a:
                b=31
            else:
                b=30
    days+=b-1 #1월이면 1일과의 차이 계산을 위해 b-1만큼 더함
    days%=7
    
    return day[days]
print(solution(5,24))
print(solution(1,8))
#결과
"TUE"
"FRI"

 

  • 다른 사람 풀이
def solution(a,b):
    answer= ["THU", "FRI","SAT", "SUN", "MON","TUE", "WED"][(sum([0,31,29,31,30,31,30,31,31,30,31,30,31][:a])+b)%7]
    return answer