본문 바로가기

알고스팟 풀이/구현

[알고스팟/ALGOSPOT] 19. WEEKLYCALENDAR

안녕하세요. 알고라파덕입니다.

19번 문제 WEEKLYCALENDAR


이 WEEKLYCALENDAR라는 문제는 구현 문제입니다.


문제의 요점은 오늘의 날짜와 요일이 주어집니다.

ex) 7 27 Saturdady

ex) 7 27 Monday


그럼 여기서 이 날짜가 있는 주의 Sunday~ Saturday까지의 날짜를 출력하는 것입니다.

Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday순!

ex) 7 27일이 토요일이기 때문에

날짜는 21 22 23 24 25 6 27을 출력합니다.

ex) 7월 27일이 월요일이기 때문에

날짜는 26 27 28 29 30 31 1을 출력합니다.


WEEKLYCALENDAR

출처 : https://algospot.com/judge/problem/read/WEEKLYCALENDAR


문제 정보

문제

당신은 오랜 기간 동안 어머니로부터의 잔소리, TV 혹은 자기 계발 서적 등에서 떠드는 진부한 소리에 세뇌된 끝에 오늘부터 성실히 살기로 결심했다. 그 첫 번째 단계로, 주간 달력을 구매해서 매일 할 일을 달력에 적고 그대로 수행하기로 결정했다. 다음의 예처럼 말이다.

하지만 달력을 사러 나가려는 순간, 당신은 모든 것이 귀찮아졌다. 대신, 집에 굴러다니는 빈 노트에 펜으로 주간 달력을 그려서 대체하기로 결정했다. 그러자 또 다른 문제가 발생했는데 바로 당신이 각 요일이 며칠에 해당하는지 생각하기가 귀찮다는 것이다. 당신은 휴대폰으로 오늘이 몇 월 며칠이며, 무슨 요일인지 알았다. 천만 다행으로 당신을 귀찮게 하지 않는 점은 올해는 윤년이 아니라는 것이다. 이제 컴퓨터 프로그램을 작성하여 주간 달력에 들어갈 숫자들을 완성하라.

입력

첫 줄에는 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스마다 한 줄에 오늘이 몇 월 며칠이며, 무슨 요일인지를 나타내는 2개의 숫자 m,d와 하나의 문자열 s가 하나의 공백을 사이에 두고 입력으로 주어진다. 입력으로 주어지는 m과 d는 달력에 있을 수 있는 날짜이며, 2월 29일인 경우는 없다. 요일을 나타내는 s는 Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday 중 하나이다.

출력

각 테스트 케이스마다 한 줄씩 그 주의 주간 달력에 쓰여야 할 숫자 7개를 하나의 공백을 사이에 두고 일월화수목금토 순으로 출력한다.

예제 입력

5
7 27 Saturday
7 27 Sunday
7 28 Sunday
7 28 Monday
7 29 Tuesday

예제 출력

21 22 23 24 25 26 27
27 28 29 30 31 1 2
28 29 30 31 1 2 3
27 28 29 30 31 1 2
27 28 29 30 31 1 2


생각해야 할 점


요일을 어떻게 구분할 것인가 

Saturday가 맨마지막에 위치하는 글자인지


1. if문 확인

2. 배열 인덱스로 확인.


1월은 31일이고, 2월은 28일이고, 3월은 30일이 있다.


배열의 인덱스에 날짜 수를 넣어서 해결.


1월 1일에서 하루 전 날은 12월 31일이다.


1. if문으로 확인.

2. 날짜수를 저장하는 배열의 1월 전칸에 31을 넣어준다.