오랑우탄의 반란

프로그래머스 | 2016년 (Python3) 본문

PYTHON/프로그래머스

프로그래머스 | 2016년 (Python3)

5&2 2024. 7. 22. 11:40
반응형

 

오늘도 오랑이는 문제를 풉니다. 

 

2016년

 

풀이 과정

필수는 아니지만 없으면 허전하기 때문에 2016년 달력을 한 번 봅시다.

이 문제에서 주목해야 할 부분은 아래 두 가지입니다:

  • 날짜 % 7 = 1 은 금요일
  • 각 월의 날짜들은 이어지기 때문에 이전 월의 일수에 날짜를 더한 값 = 날짜

즉, 요일과 월별 일수를 나열한 리스트 2개를 작성해주고 여기서 값을 추출해서 계산해주는 방식으로 풉니다.

아까 나머지가 1일 때 금요일이기 때문에 리스트 인덱스와 맞춰서 작성해줍니다.

또한 이전 달의 날짜에 b 를 더해야 하기 때문에 month 리스트는 0부터 시작하도록 해줍니다. 

def solution(a, b):
    weekday = ['THU','FRI','SAT','SUN','MON','TUE','WED']
    month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30]
    day = 0

 

range(a) 에 대해서 (0~11) 각 월에 대해 day 에 월별 일수를 더해주고,

그것을 7로 나눈 나머지를 weekday 인덱스로 뽑아줍니다. 

12월에 대한 month 값이 필요하지 않은 이유를 알 수 있지요. 

    for i in range(a):
        day += month[i]
    answer = weekday[(day + b) % 7]

 

최종 코드

def solution(a, b):
    weekday = ['THU','FRI','SAT','SUN','MON','TUE','WED']
    month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30]
    day = 0
    for i in range(a):
        day += month[i]
    answer = weekday[(day + b) % 7]
    return answer

 



오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~

 

 

 

프로그래머스

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

programmers.co.kr

 

반응형