본문 바로가기
프로그래머스/1단계

(Python/LV1) 2016년

by windy7271 2022. 9. 12.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12901

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정 : 

 

처음엔 하나하나 이렇게 다 리스트에 넣었다.

def solution(a, b):
	day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
	months = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31]

	answer = sum([months[i] for i in range(a-1)]) % 7
	return day[answer]
    
   # 코드 실행은 성공하지만 제출 후 채점하기는 틀린다.. 왜 일까 ?

 

 

day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
months = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31]

answer = (sum([months[i] for i in range(a-1)]) + b) % 7
return day[answer]

b를 생각을 안 하고 있었다. >> 이것도 아니다

 

정답 코드 : 요일 시작이 금요일이고 1월 1일 금요일 하루 계산을 했기 때문에 1 빼준다.

def solution(a, b):
    day = ["FRI","SAT","SUN","MON","TUE","WED","THU"]
    months = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31]

    answer = (sum([months[i] for i in range(a - 1)]) + b - 1) % 7
    return day[answer]

 

 

다른 분 풀이 1: 이렇게 푼 사람도 있다

def getDayName(a,b):
    answer = ""
    if a>=2:
        b+=31
        if a>=3:
            b+=29#2월
            if a>=4:
                b+=31#3월
                if a>=5:
                    b+=30#4월
                    if a>=6:
                        b+=31#5월
                        if a>=7:
                            b+=30#6월
                            if a>=8:
                                b+=31#7월
                                if a>=9:
                                    b+=31#8월
                                    if a>=10:
                                        b+=30#9월
                                        if a>=11:
                                            b+=31#10월
                                            if a==12:
                                                b+=30#11월
    b=b%7

    if b==1:answer="FRI"
    elif b==2:answer="SAT" 
    elif b==3:answer="SUN"
    elif b==4:answer="MON"
    elif b==5:answer="TUE"
    elif b==6:answer="WED"
    else:answer="THU"
    return answer

 

다른분 풀이 2: 함수활용 하기

 

import datetime

def getDayName(a,b):
    t = 'MON TUE WED THU FRI SAT SUN'.split()
    return t[datetime.datetime(2016, a, b).weekday()]


#아래 코드는 테스트를 위한 출력 코드입니다.
print(getDayName(5,24))
반응형

댓글