728x90
728x90
문제
월 일로 이루어진 날짜를 2개 입력 받아, 두 번째 날짜가 첫 번째 날짜의 며칠째인지 출력하는 프로그램을 작성하라.
제약 사항
월은 1 이상 12 이하의 정수이다. 각 달의 마지막 날짜는 다음과 같다.
1/31, 2/28, 3/31, 4/30, 5/31, 6/30, 7/31, 8/31, 9/30, 10/31, 11/30, 12/31
두 번째 날짜가 첫 번째 날짜보다 항상 크게 주어진다.
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 4개의 수가 주어진다.
첫 번째 수가 월을 나타내고 두 번째 수가 일을 나타낸다. 그 다음 같은 형식으로 두 번째 날짜가 주어진다.
출력
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
예제
[입력] | [출력] |
3 3 1 3 31 5 5 8 15 7 17 12 24 |
#1 31 #2 103 #3 161 |
문제 해결 방법
- 각 월별 날짜 수를 딕셔너리 객체(@date_dict@)에 넣는다.
date_dict = { 1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31 }
- 첫 번째 날짜(@M1@ @D1@)를 올해 1월 1일 기준 몇 번째 날짜인지 계산한다.
- @1@월부터 @M1 - 1@월까지의 모든 날짜 수들을 더해준 후, 추가적으로 입력 받은 @D1@을 합해줌으로써 구할 수 있다.
# 첫 번째 날짜에서 총 일수 구하기
origin_total_date = 0
for month in range(1, M1):
origin_total_date += date_dict[month]
origin_total_date += D1
- 두 번째 날짜(@M2@ @D2@)를 올해 1월 1일 기준 몇 번째 날짜인지 계산한다.
- @1@월부터 @M1 - 1@월까지의 모든 날짜 수들을 더해준 후, 추가적으로 입력 받은 @D2@를 합해줌으로써 구할 수 있다.
# 두 번째 날짜에서 총 일수 구하기
target_total_date = 0
for month in range(1, M2):
target_total_date += date_dict[month]
target_total_date += D2
- 정답을 구한 후 출력시켜준다.
# 정답 구하기 (첫 번째 날짜 총 일수 - 두 번째 날짜 총 일수)
answer = target_total_date - origin_total_date + 1
print(f"#{test_case} {answer}")
코드
T = int(input())
for test_case in range(1, 1 + T):
M1, D1, M2, D2 = map(int, input().split())
# 1월 : 31일 / 2월 : 28일 / 3월 : 31일 / 4월 : 30일
# 5월 : 31일 / 6월 : 30일 / 7월 : 31일 / 8월 : 31일
# 9월 : 30일 / 10월 : 31일 / 11월 : 30일 / 12월 : 31일
date_dict = { 1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31 }
# 첫 번째 날짜에서 총 일수 구하기
origin_total_date = 0
for month in range(1, M1):
origin_total_date += date_dict[month]
origin_total_date += D1
# 두 번째 날짜에서 총 일수 구하기
target_total_date = 0
for month in range(1, M2):
target_total_date += date_dict[month]
target_total_date += D2
# 정답 구하기 (첫 번째 날짜 총 일수 - 두 번째 날짜 총 일수)
answer = target_total_date - origin_total_date + 1
print(f"#{test_case} {answer}")
참고
- 난이도: D2
728x90
728x90
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA-1928][Python] Base64 Decoder (0) | 2023.10.23 |
---|---|
[SWEA-1940][Python] 가랏! RC카! (1) | 2023.10.19 |
[SWEA-1945][Python] 간단한 소인수분해 (1) | 2023.10.19 |
[SWEA-1946][Python] 간단한 압축 풀기 (1) | 2023.10.19 |
[SWEA-1954][Python] 달팽이 숫자 (1) | 2023.10.18 |
[SWEA-1959][Python] 두 개의 숫자열 (0) | 2023.10.17 |
[SWEA-1961][Python] 숫자 배열 회전 (0) | 2023.10.17 |
[SWEA-1966][Python] 숫자를 정렬하자 (1) | 2023.10.16 |