[SWEA] 1948. 날짜 계산기

Hyerin·2022년 11월 10일
0

SWEA

목록 보기
11/13

문제

월 일로 이루어진 날짜를 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개의 수가 주어진다.

첫 번째 수가 월을 나타내고 두 번째 수가 일을 나타낸다. 그 다음 같은 형식으로 두 번째 날짜가 주어진다.

3 
3 1 3 31
5 5 8 15
7 17 12 24  

[출력]

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

#1 31
#2 103
#3 161

T = int(input())
cal = {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):
    a, b, c, d = map(int, input().split())
    answer = 0
    e = 0
    f = 0
    
    if a == c:
        answer = d - b + 1
    elif c > a:
        for i in range(1, c):
            e += cal.get(i)        
        for i in range(1, a):
            f += cal.get(i)
        answer = (e + d) - (f + b) +1
        
        
    print("#%d" %test_case, answer)

  1. e : (c - 1)월까지의 전체 날짜 수 -> d값을 더해주면 c월d일
  2. f : (a - 1)월까지의 전체 날짜 수 -> b값을 더해주면 a월b일
profile
DevOps, 코딩 기록

0개의 댓글