Wacky_Life

 

코딩테스트 연습 - 2016년

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

programmers.co.kr

 

문제 설명

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"

 

 

 

코드(1)

1
2
3
4
5
6
import datetime
 
def solution(a,b):
    day = ["THU""FRI""SAT""SUN""MON""TUE""WED"]
    mon = [312931303130313130313031]
    return day[(sum(mon[:a-1])+b)%7]
cs
 
4번째 줄 : 1월 1일이 금요일이므로 7로 나눴을 때 인덱스 1이 금요일로 나오게 설정한다.

5번째 줄 : 각 달의 전체 날짜만큼 배열로 저장한다.

6번째 줄 : mon배열의 (a-1)월까지 더한 수에 날짜인 b를 더하고 7로 나눈 인덱스에 해당하는 수 반환한다.

 

코드(2)

1
2
3
4
5
import datetime
 
def solution(a,b):
    t = 'MON TUE WED THU FRI SAT SUN'.split()
    return t[datetime.datetime(2016,a,b).weekday()]
cs

 

5번째 줄 : datetime.datetime을 통해 해당 날짜를 datetime 형식으로 바꾼 후, weekday()를 사용하여 요일을 정수로 변환하여 반환했다(월요일 = 0, 일요일 = 6).

ex) date(2011,12,24).weekday() == 5

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading