본문 바로가기
Algorithm/Programmers Lv.1

[코딩테스트 연습] 2016년

by newnu 2021. 6. 6.
반응형

# Problem

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일같은 날짜는 주어지지 않습니다)

입출력 예

a b result
5 24 "TUE"

# My Answer

def solution(a, b):
    answer = ''
    month = [0,31,29,31,30,31,30,31,31,30,31,30,31]
    day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
    temp = (sum(month[:a])+b-1)%7
    answer = day[(temp+5)%7]
    return answer

month - 월별 날수

day - 요일명 리턴

 

입력 월 이전까지의 모든 날수를 더하고 입력 날짜의 (일수-1)까지 더하면 1월 1일부터 지난 날수를 계산할 수 있다.

1월1일이 금요일이므로 금요일은 day의 인덱스 5번이므로 5에 더한 날들을 7로 나누어 나온 요일(숫자)를 더하고 다시 7로 나눈 나머지가 해당 날짜의 요일 인덱스가 된다

day리스트를 금요일부터 시작하면 5를 더해주는 과정은 생략가능

반응형