[PG12901] 2016년

프로그래머스

https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

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

programmers.co.kr

🚩 문제 설명

프로그래머스 #12901

◾ a와 b로 월과 일이 주어지면 2016년 내의 해당 날짜의 요일을 반환하는 문제

◾ 2016년은 윤년인 것을 확인하자.

 

 


 

 

✅ 입출력

a: 요일을 구해야하는 월
b: 요일을 구해야하는 일
return ➡️ a월 b일의 요일을 반환한다.
a b return
5 24 "TUE"
2 1 "MON"

 

 

 


 

 

 

📑 문제 풀이

with 파이썬 (Python)
weeks = ['FRI','SAT','SUN','MON','TUE','WED','THU']
day31 = [1, 3, 5, 7, 8, 10, 12]
day30 = [4, 6, 9, 11]

def solution(a, b):
    ans = ''
    week = 0
    for mon in range(1, a):
        if mon in day31:
           week += 31
        if mon in day30:
            week += 30
        if mon == 2:
            week += 29
    week = week + (b - 1)
    week = week % 7
    ans = weeks[week]
    return ans

💬 Point

➡️  day31, day30 배열로 일수에 맞는 달로 나눈다.
➡️  week = week + (b - 1) : week가 0으로 선언되었기 때문
➡  week = week % 7 : 요일의 갯수가 7개 이므로

◾ 우선 일수를 뜻하는 week 변수를 선언한다.

  • 요일은 7일을 기준으로 반복이 되므로 일수를 기준으로 구해줘야 한다.

◾ 해당 변수에 각 달에 맞는 일수를 더해준다.

◾ 만약, 5월 24일 이면

  • 31 + 29 + 31 + 30 : 여기까지 4월의 일수를 센 것
  • 31 + 29 + 31 + 30 + (24 - 1) = 144가 된다.

◾ 그리고 해당 일수를 7로 나눠준다.

◾ 2016년의 1월 1일이 금요일부터 시작하므로 weeks 배열은 'FRI' 부터 시작한다.

◾ 구한 수로 weeks[week] 하여 해당 날짜의 요일을 구한다.

 

 

 

 

 

 

 

 

 

 

 

 


 

728x90

'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 프로그래머스' 카테고리의 다른 글

[PG42889] 실패율  (0) 2021.11.24
[PG42586] 기능개발  (0) 2021.11.23
[PG42888] 오픈채팅방  (0) 2021.11.21
[PG42860] 조이스틱  (0) 2021.11.06
[PG42840] 모의고사  (0) 2021.11.06