날짜 판별

면접 대비

시간 제한1초메모리 제한128 MB

요약
일, 월, 연도 세 수를 종료 조건까지 반복 입력받아 윤년 규칙을 포함해 실제 존재하는 날짜인지 판정하는 문제입니다.
난이도

쉬움10점 중 3점

유형
구현, 수학
정답자
아직 제출이 없습니다

문제

날짜는 보통 일, 월, 연도를 나타내는 숫자 세 개로 표현한다. 예를 들어 2004년 8월 14일은 14 8 2004로 쓸 수 있다. 날짜를 입력으로 받는 프로그램은 세 숫자가 실제로 존재하는 날짜인지 확인해야 한다.

잘못된 날짜가 되는 대표적인 경우는 다음과 같다.

  • 월이 1 이상 12 이하가 아니다.
  • 주어진 월에 존재하지 않는 일을 사용했다.
  • 2월 29일을 사용했지만 해당 연도가 윤년이 아니다.

대부분의 달은 31일까지 있다. 다만 4월, 6월, 9월, 11월은 30일까지 있고, 2월은 평년에는 28일까지, 윤년에는 29일까지 있다. 연도가 4로 나누어떨어지면 보통 윤년이지만, 100으로도 나누어떨어지는 해는 윤년이 아니다. 단, 400으로 나누어떨어지는 해는 다시 윤년이다.

입력

입력은 여러 개의 날짜로 이루어져 있으며, 각 날짜는 한 줄에 주어진다. 한 날짜는 음이 아닌 정수 세 개 d m y로 주어지고, 각각 일, 월, 연도를 뜻한다. 일과 월은 항상 100보다 작고, 연도는 항상 1700 이상 2200 이하이다.

0 0 0이 입력되면 종료하며, 이 줄은 판정하지 않는다.

출력

입력된 각 날짜마다 한 줄에 하나의 단어를 출력한다. 세 숫자가 유효한 날짜를 나타내면 Valid, 그렇지 않으면 Invalid를 출력한다.

예제1

  1. 예제 1

    입력
    14 8 2004
    12 0 2004 
    32 1 1976
    29 2 1974
    29 2 1976
    0 0 0
    
    예상 출력
    Valid
    Invalid
    Invalid
    Invalid
    Valid