유통기한
면접 대비시간 제한1초메모리 제한1024 MB
각 식품의 날짜를 유효한 모든 년월일 형식으로 읽어 봅니다. 유효한 해석이 없으면 invalid, 모든 해석에서 오늘이 유통기한 이전이거나 같으면 safe, 그렇지 않으면 unsafe를 출력합니다.
문제
자취 년 차 한별이는 냉장고에 있는 음식들의 유통기한이 지나지 않았는지 걱정이다. 그런데 유통기한에 적힌 날짜의 연도, 월, 일 순서를 알 수 없어서 고민하고 있다.
날짜를 표기하는 방법은 나라마다 다르며, 크게 세 가지가 있다.
- 연도/월/일: 대한민국, 일본, 중국, 리투아니아, 몽골, 부탄, 헝가리 등 동아시아권 국가
- 일/월/연도: 그리스, 네덜란드, 덴마크, 독일, 러시아, 베트남, 이집트, 이탈리아 등 대부분의 국가
- 월/일/연도: 미국, 괌, 필리핀 등 일부 영어권 국가
예를 들어 10/12/32라는 날짜는
- 일/월/연도로 읽으면 년 월 일
- 월/일/연도로 읽으면 년 월 일
중 하나가 된다. 월 일은 존재하지 않으므로 연도/월/일 형식(년 월 일)은 아니라는 것을 알 수 있다.
한별이는 유효한 날짜로 읽을 수 있는 모든 형식에서 음식이 안전한지 알고 싶다. 한별이를 도와 음식이 안전한지 판단하는 프로그램을 작성하자.
입력
첫 번째 줄에 오늘 날짜를 나타내는 정수 , , 가 공백으로 구분되어 주어진다. 오늘은 년 월 일이다. (, 년 월 일은 올바른 날짜)
다음 줄에는 냉장고 음식의 개수 이 주어진다. ()
다음 개의 줄에는 음식 하나의 유통기한을 나타내는 정수 , , 가 공백으로 구분되어 주어진다. 유통기한은 // 형식으로 적혀 있다. ()
모든 날짜는 2000년에서 2099년 사이이며, 연도는 으로 나눈 나머지만 주어진다.
출력
각 날짜마다 한 줄에 하나씩 다음 중 한 가지를 출력한다.
invalid: 어떤 형식으로 읽어도 올바르지 않은 날짜인 경우safe: 유효한 날짜로 읽을 수 있는 모든 형식에서 오늘이 유통기한보다 이전이거나 같은 날인 경우unsafe: 나머지 경우
힌트
월, 월, 월, 월, 월, 월, 월은 각각 일까지 있다.
월, 월, 월, 월은 각각 일까지 있다.
월은 윤년이면 일, 윤년이 아니면 일까지 있다. 이 문제의 연도는 2000년에서 2099년 사이이므로, 로 나누어떨어지는 연도는 모두 윤년이다.