행궁동 데이터 엔지니어

반응형

https://programmers.co.kr/learn/courses/30/lessons/12901?language=python3

 

알고리즘 연습 - 2016년 | 프로그래머스

실행 결과가 여기에 표시됩니다.

programmers.co.kr

월별 Days를 딕셔너리로 만들어서 문제해결.

날짜를 1~366(2016년이 윤년이라 366)까지의 숫자로 만들고 나머지를 구해서 해당날짜가 무슨요일인지 구한다.

 

아래는 테스트 통과한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Month_per_Days = {}
Month = [i for i in range(1,13)]
Days = [0,31,29,31,30,31,30,31,31,30,31,30]
 
for i, j in zip(Month, Days) :
    Month_per_Days[i] = j
 
def solution(a, b):
    answer = ''
    
    sum_days = 4
    for i in range(1,a+1) :
        sum_days+= Month_per_Days[i]
    sum_days = sum_days + b
    
    if sum_days % 7 == 1 : 
        answer = "MON"
    elif sum_days % 7 == 2 : 
        answer = "TUE"
    elif sum_days % 7 == 3 : 
        answer = "WED"
    elif sum_days % 7 == 4 : 
        answer = "THU"
    elif sum_days % 7 == 5 : 
        answer = "FRI"
    elif sum_days % 7 == 6 : 
        answer = "SAT"
    elif sum_days % 7 == 0 : 
        answer = "SUN"
        
    return answer

 

참고할만한 다른사람 코드(if, elif 구문을 리스트로 대체 했다)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
# 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
def getDayName(a,b):
    m_days = [0312931303130313130313031]
    accum_days = []
    k = 0
    for i in range(12):
        k += m_days[i]
        accum_days.append(k)
    days = accum_days[a-1+ b
    wkday = days % 7
    answer = ['THU''FRI''SAT''SUN''MON''TUE''WED'][wkday]
    return answer
 
#아래 코드는 테스트를 위한 출력 코드입니다.
print(getDayName(5,24))
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs
반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band