[SW Academy] 1948. 날짜 계산기

DreamJJW·2023년 5월 25일
0

SW Academy

목록 보기
12/26

📖 문제

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

월 일로 이루어진 날짜를 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부터 시작한다.)



📖 풀이

각 달마다 dict을 지정해서 풀면 되는 문제.
주어진 달이 같은 경우와 아닌 경우를 나누어서 해결하면 된다.

예시로 주어진 테스트 케이스 (5/5 부터 8/15)을 예를 들면,
합 = 8월의 15일 + 7월의 31일 6월의 30일 + (5월의 31일 - 5월의 5일) + 1일
= 15 + 31 + 30 + 26 + 1 = 103이 된다.

T = int(input())
days = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    day_sum = 0
    month1, day1, month2, day2 = map(int, input().split())

    if month1 == month2: # 달이 같을 경우
        day_sum += day2 - day1 + 1
    else:
        day_sum += day2 
        for i in range(month2 - 1, month1, -1): # for문을 거꾸로 해서 돈다
            day_sum += days[i]
        day_sum += days[month1] - day1 + 1

    print("#{0} {1}".format(test_case, day_sum))




profile
간절한 사람

0개의 댓글