2007년
https://www.acmicpc.net/problem/1924
1924번: 2007년
첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
www.acmicpc.net
문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
출력
첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.
예제 입력 1
1 1
예제 출력 1
MON
예제 입력 2
3 14
예제 출력 2
WED
예제 입력 3
9 2
예제 출력 3
SUN
예제 입력 4
12 25
예제 출력 4
TUE
코드
x, y = map(int, input().split())
weekday = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
date = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
day = 0
for i in range(x):
day += date[i]
else:
day -= date[x-1]
day += y
print(weekday[day % 7])
풀이
우선 문제에서 주어진 x, y를 입력받고, 출력할 요일을 weekday 변수에 리스트로 할당한다. 그리고 각 월마다 일 수를 date 변수에 리스트 형태로 할당한다.
풀이 아이디어는 입력받은 월(x), 일(y)의 총 일 수를 day에 다 더한 후, 7로 나누어 요일을 출력하는 것이다.
for문을 통해 월 수만큼 해당 월까지의 일 수를 다 더해준다. 예를 들어 x = 3이라면 day = 31 + 28 + 31이 되는 것이다.
for문을 다 돌고난 뒤, 입력받은 월(x)의 일 수를 우선 빼준다. (y의 값에 따라 더해야 하는 일 수가 달라지기 때문)
그 후, y만큼 day 변수에 더해준 뒤, 7로 나누어 해당 요일을 출력해준다.
참고 | for-else문
보통 else문는 if문와 함께 오는 경우가 대부분인데, for문과도 함께 쓰이기도 한다.
for-else는 for문이 break 등에 의해 끊기지 않고 끝까지 수행되었을 때 수행하는 코드를 담고 있는다.
예시는 아래와 같다.
total = 0
for i in range(10):
total += i
else:
print("for문이 끝까지 실행되었다.")
'Python > Coding Test' 카테고리의 다른 글
[백준] 11726 : 2×n 타일링 (파이썬 / Python) (0) | 2023.07.13 |
---|---|
[백준] 1463 : 1로 만들기 (파이썬 / Python) (0) | 2023.07.13 |
[자료구조 알고리즘] Dynamic Programming (동적계획법) (0) | 2023.07.12 |
[자료구조 알고리즘] 빅오(Big-O) 표기법 (0) | 2023.07.10 |
[백준] 10951 : A+B-4 (파이썬 / Python) (0) | 2023.07.09 |