[프로그래머스][LV.1] 2016년 | python3
2025. 1. 24. 18:30ㆍ프로그래머스/LV.1
문제 링크: 2016년
문제 설명
문제 설명
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일같은 날짜는 주어지지 않습니다)
문제 풀이
약간의 도움을 받았다...
처음에 날짜 관련 함수를 써야하나...아득했는데 딕셔너리로 풀 수 있는 방법이 있었다.
딕셔너리로 각 달의 일 수를 저장한다.
1월 1일이 금요일이기 때문에 7로 나누었을때 1이 남으면 금요일이 되어야 한다. 인덱스 1인 곳에 금요일로 설정하고 다른 요일들도 리스트에 채워준다.
일수를 계산해서 7로 나누고 남은 나머지를 인덱스 값으로 두어 요일을 구한다.
내코드
def solution(a, b):
date={1:31,2:29,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
days=['THU','FRI','SAT','SUN','MON','TUE','WED']
chk=0
for i in range(1,a):
chk+=date[i]
chk+=b
answer = days[chk%7]
return answer
더보기
다른사람풀이
def getDayName(a,b):
month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
day = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
return day[(sum(month[:a-1])+b-1)%7]
#아래 코드는 테스트를 위한 출력 코드입니다.
print(getDayName(5,24))
딕셔너리로 안하고 요일과 마찬가지로 달과 일수도 리스트와 인덱스를 활용해서 할 수 있다.
이 분은 함수로 만들어서 풀었다. 이 사람은 FRI를 0으로 두었기 때문에 b-1을 해줬다.
month와 day 둘 다 리스트로 만들었기 때문에 인덱스로 편하게 가져올 수 있다.
'프로그래머스 > LV.1' 카테고리의 다른 글
[프로그래머스][LV.1] 과일 장수 | python3 (0) | 2025.01.24 |
---|---|
[프로그래머스][LV.1] 모의고사 | python3 (0) | 2025.01.24 |
[프로그래머스][LV.1] 폰켓몬 | python3 (0) | 2025.01.23 |
[프로그래머스][LV.1] 추억 점수 | python3 (1) | 2025.01.23 |
[프로그래머스][LV.1] 카드 뭉치 | python (0) | 2025.01.23 |