[SWEA] 2056. 연월일 달력

Hyerin·2022년 11월 7일
0

SWEA

목록 보기
3/13

문제

연월일 순으로 구성된 8자리의 날짜가 입력으로 주어진다.

해당 날짜의 유효성을 판단한 후, 날짜가 유효하다면

[그림1] 과 같이 ”YYYY/MM/DD”형식으로 출력하고,

날짜가 유효하지 않을 경우, -1 을 출력하는 프로그램을 작성하라.

연월일로 구성된 입력에서 월은 1~12 사이 값을 가져야 하며

일은 [표1] 과 같이, 1일 ~ 각각의 달에 해당하는 날짜까지의 값을 가질 수 있다.

※ 2월의 경우, 28일인 경우만 고려한다. (윤년은 고려하지 않는다.)

[입력]

입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.

다음 줄부터 각 테스트 케이스가 주어진다.

[출력]

테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)


#import sys
#sys.stdin = open("input.txt", "r")

T = int(input())
a = {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):
    case = str(input())
    yy = case[0:4]
    mm = case[4:6]
    dd = case[6:8]
    
    answer = ""
    if 0 < int(mm) < 13 and 0 < int(dd) <= a[int(mm)]:
        answer = yy + '/' + mm + '/' + dd
    else:
        answer += '-1'

    print("#" + str(test_case) + " " + answer)

  1. T로 줄수를 입력받는다.
  2. 매달 마지막 날짜의 값을 딕셔너리(a)로 저장한다.
  3. yy, mm, dd을 string으로 분리해서 저장하고
    mm가 12를 넘지 않음 and dd가 딕셔너리에 저장한 값보다 넘지 않음 < 을 충족하는
    값을 answer에 저장한다.
profile
DevOps, 코딩 기록

0개의 댓글