문제
https://www.acmicpc.net/problem/1924
<특이점>
- 2월이 28일까지 있다.
- 1월 1일이 월요일이다.
코드
month = [31,28,31,30,31,30,31,31,30,31,30,31]
days = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
m, d = map(int, input().split())
print(days[((sum(month[i] for i in range(m-1))+ d) % 7)])
풀이
프로그래머스에서 풀었던 연습 문제 중 2016년 문제와 동일한 방식으로 풀 수 있었다.
그때 배웠던 것이 sum을 comprehension을 이용해 사용하는 것이였는데, 가독성이 별로인 듯 싶다.
오히려 sum(month[:m]) 을 이용해 month[0] ~ month[m-1] 을 나타내는 것이 더 나아보인다.
✔처음에 변수명을 day라 써서 nameError가 발생했는데, 자체 변수와 겹쳐서 인것 같다. days로 고쳐주니 통과했다.
✔ 짧게 코드를 짜는 것이 능사는 아니다. 직관적인 것과 짧은 것은 다른 것임을 기억하자
다른 풀이
출처: https://www.acmicpc.net/source/17639507
x, y = map(int, input().split())
for i in range(1, x):
if i in [1, 3, 5, 7, 8, 10, 12]:
y += 31
elif i == 2:
y += 28
else:
y += 30
day_week = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
print(day_week[y % 7])
→ 외려 이쪽이 더 직관성이 뛰어나보인다
- 굳이 달 별 날짜를 별도의 리스트로 정의하기보단, 분기문을 작성해 31일/ 28일/ 30일로 경우를 나눠 더해줬다.
- 이때, 특정 문자 or 숫자가 list안 element인지 판별하기 위해 " if i in [리스트]"를 사용함
- 1월 1일이 월요일로 주어졌기때문에 %7을 이용해 나머지가 1 == 월요일임을 이용해 일요일부터 리스트에 담았다
'Algorithm > Beakjoon' 카테고리의 다른 글
[Python] 백준 2446번_별 찍기 - 9 (0) | 2022.08.05 |
---|---|
[Python] 백준 8393번_합 (0) | 2022.08.03 |
[Python] 백준 11720번_숫자의 합 (0) | 2022.08.01 |
[Python] 백준 11719번_그대로 출력하기 2 (0) | 2022.08.01 |
[Python] 백준 11718번_그대로 출력하기 (0) | 2022.08.01 |