만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

미술 달력

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

요약
연도와 1월 1일의 요일, 그리고 날짜(또는 Flip)가 주어질 때, 해당 달력 시트의 앞면과 뒷면에 인쇄된 날짜를 출력한다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현, 수학, 배열
정답자
아직 제출이 없습니다

문제

달력에는 미술 작품이 실려 있다. 달력은 여러 장의 낱장으로 이루어져 있고, 각 낱장에는 양면에 그림이 하나씩 인쇄되어 있다. 한 해의 각 주에는 여섯 쪽이 배정된다. 월요일부터 금요일까지는 각각 별도의 쪽에 있고, 토요일과 일요일은 한 쪽에 함께 있다. 예를 들어 이 달력에는 날짜 하나가 있는 쪽이 있다:

  • 21 November • Friday • 2014

그리고 그다음 두 휴일을 위한 공동 쪽도 있다:

  • 22 November • Saturday • 2014
  • 23 November • Sunday • 2014

앞선 날짜(또는 날짜들)가 있는 쪽을 낱장의 앞면, 반대쪽을 뒷면이라고 부른다. 낱장은 상반기의 날짜 순서대로 차례로 쌓여 있고, 맨 앞에는 1 January(단독이거나 2 January와 함께) 낱장이 있다. 달력의 날짜는 맨 앞 낱장을 방향을 바꾸지 않고 맨 뒤로 옮겨서 넘긴다. 연초에 마지막이었던 낱장이 맨 앞에 올 때까지 이를 반복한다. 그 낱장의 앞면에는 그림과 날짜 대신 "Flip"이라는 문구가 인쇄되어 있다. 이는 이 낱장도 지금까지처럼 맨 뒤로 옮기고, 낱장 전체를 수직축을 기준으로 180° 회전시켜 방금 맨 뒤로 옮긴 다음 날짜가 적힌 낱장의 뒷면이 맨 앞에 오게 한다는 뜻이다. 하반기의 날짜 전환도 위에서 설명한 방식으로 이루어진다.

주어진 연도, 그해 1월 1일의 요일, 그리고 날짜를 입력받아 해당 낱장의 양면 내용을 결정하는 프로그램 calendar를 작성하시오.

입력

표준 입력의 한 줄에 세 가지 정보가 주어진다:

  1. 금세기 또는 지난 세기의 연도;
  2. 그해 1월 1일의 요일;
  3. 주어진 연도의 날짜를 . 형식으로 나타낸 것, 또는 Flip이라는 문자열.

참고: 요일은 Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday이다.

출력

표준 출력의 첫째 줄은 "Face:"로 시작하고, 그 뒤에 찾은 낱장의 앞면에 있는 날짜와 요일이 오거나, 찾은 낱장에 "Flip"이 있으면 "Flip"이 온다. 둘째 줄은 "Back:"으로 시작하고, 그 뒤에 찾은 낱장의 뒷면에 있는 날짜와 요일이 온다. 각 정보는 공백 하나로 구분한다. 낱장의 앞면이나 뒷면에 두 날짜가 있을 수 있다(토요일과 일요일은 한 쪽에 있다). 그때는 해당 줄에 Saturday Sunday를 나열한다. 빈 쪽이 있는 낱장의 경우 그 쪽에 대해서는 줄을 출력하지 않는다. 모든 요일과 월은 두 자리로 표기한다.

예제3

  1. 예제 1

    입력
    2014 Wednesday 28.02
    
    예상 출력
    Face: 28.02 Friday
    Back: 03.11 Monday
    
  2. 예제 2

    입력
    2014 Wednesday 16.11
    
    예상 출력
    Face: 15.02 Saturday 16.02 Sunday
    Back: 15.11 Saturday 16.11 Sunday
    
  3. 예제 3

    입력
    2014 Wednesday Flip
    
    예상 출력
    Face: Flip
    Back: 02.07 Wednesday