๋ฐฑ์ค€ 1924 ํŒŒ์ด์ฌ

2021. 6. 29. 17:06ใ†Python

https://www.acmicpc.net/problem/1924

 

1924๋ฒˆ: 2007๋…„

์ฒซ์งธ ์ค„์— ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  x(1 ≤ x ≤ 12)์™€ y(1 ≤ y ≤ 31)์ด ์ฃผ์–ด์ง„๋‹ค. ์ฐธ๊ณ ๋กœ 2007๋…„์—๋Š” 1, 3, 5, 7, 8, 10, 12์›”์€ 31์ผ๊นŒ์ง€, 4, 6, 9, 11์›”์€ 30์ผ๊นŒ์ง€, 2์›”์€ 28์ผ๊นŒ์ง€ ์žˆ๋‹ค.

www.acmicpc.net

๊ตฌํ•ด์•ผ ํ•˜๋Š” ๋ฐ”๋Š” ๊ฐ„๋‹จํ•˜๋‹ค! 2007๋…„ x์›” y์ผ์ด ๋ฌด์Šจ ๋‚ ์งœ์ธ์ง€ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. 

2007๋…„ 1์›” 1์ผ์€ ์›”์š”์ผ์ด๋‹ค. 

 

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผ์„ ๊ฝค ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์ฒ˜์Œ์— ๊ณ ๋ฏผํ•œ ๊ฒƒ์€ ์›”๋ณ„๋กœ 31์ผ์ด๊ฑฐ๋‚˜, 30์ผ์ด๊ฑฐ๋‚˜, 28์ผ์ด ๋˜๋Š”๋ฐ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐํ•ด์•ผ ๊ทธ ๋‹ค์Œ ์›”์˜ ์‹œ์ž‘ ์š”์ผ์„ ์•Œ ์ˆ˜ ์žˆ์„๊นŒ, ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๊ฐ™์€ ๋‹ฌ ๋‚ด์—์„œ๋Š” 7์ผ๋งˆ๋‹ค ๋ฐ˜๋ณต๋˜๋Š” ๊ทœ์น™์ด ์ƒ๊ธฐ์ง€๋งŒ ์›”์ด ๋ฐ”๋€Œ๋ฉด ๊ทธ ๊ทœ์น™์ด ๋ชจ๋‘ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋ฐฉ์‹์€ ํ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

dates = deque(['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'])

ํ์— sun์„ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ๋„ฃ๊ณ  ์ฐจ๋ก€๋Œ€๋กœ sat๊นŒ์ง€ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋„ฃ์–ด์ค€๋‹ค.

์šฐ์„  ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ 1์›” 1์ผ์€ ์›”์š”์ผ์ด๋‹ค. ์ฆ‰, dates๋ผ๋Š” ํ์˜ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค(0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” MON์ด ๋งž์Œ)์™€ ์ผ์น˜ํ•œ๋‹ค.

 

1์›” 2์ผ์€ 7%2 == 2. ์ฆ‰ ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์™€ ์ผ์น˜ํ•œ๋‹ค.

 

์ธ๋ฑ์Šค์™€ ๊ณ„์†ํ•ด์„œ ์ผ์น˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ค ํŠน์ •ํ•œ ์›”์˜ 1์ผ์ด ๋‚˜์˜ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ€ ๋˜๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

์ฆ‰, ๋งŒ์•ฝ 3์›” 1์ผ์ด ์ˆ˜์š”์ผ์ด๋ผ๋ฉด ์ˆ˜์š”์ผ์ด dates[1]์˜ ๊ฐ’์ด์—ฌ์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งž์ถ”์–ด ์ฃผ๋ฉด 3์›”์˜ ์–ด๋–ค y์ผ์ด ์ž…๋ ฅ๋˜์–ด๋„ y % 7์˜ ๊ฐ’์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ˆ˜, ๋ชฉ, ๊ธˆ, ํ† , ์ผ, ์›”, ํ™” ํ˜•์‹์„ ๋”ฐ๋ฅด๊ฒŒ ๋˜์–ด ์žˆ๋‹ค. ๊ทธ ํ˜•์‹์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋„๋ก ํ์˜ ๊ฐ’์„ popํ•˜๊ณ  appendํ•ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ทœ์น™์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์กฐ์‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์›”๋งˆ๋‹ค ๋‚ ์งœ๊ฐ€ 31์ผ, 30์ผ, 28์ผ๋กœ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ฒฐ๋ก ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ for ๋ฌธ์€

zeroIndex = 1

for month in range(1, x):
    if month==2: zeroIndex = 28%7
    elif month ==4 or month==6 or month==9 or month==11: zeroIndex = 30%7
    else: zeroIndex = 31%7
    for i in range(zeroIndex):
        dates.append(dates.popleft())

์ฆ‰, month์˜ range(1,x) (์—ฌ๊ธฐ์„œ x๋Š” ์ž…๋ ฅ๋ฐ›์€ x์›”) ๋™์•ˆ case๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ๊ณ„์‚ฐ์„ ์‹คํ–‰ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ 3์›” 3์ผ์˜ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด x == 3, ์ฆ‰ for๋ฌธ์€ month๊ฐ€ 1, 2 ์ผ๋•Œ๋งŒ ๋Œ๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋‚ด๊ฐ€ for๋ฌธ์—์„œ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ 3์›” ์ง์ „๋‹ฌ์ธ 2์›”๋‹ฌ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด for๋ฌธ ์•ˆ์— ์ค‘์ฒฉ๋˜์–ด ์žˆ๋Š” for ๋ฌธ(range(zeroIndex)์ธ)์—์„œ ๊ตฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด 2์›”๋‹ฌ ๋‚ ์งœ์—์„œ์˜ ๊ทœ์น™์„ ๊นจ๊ณ  ์ƒˆ๋กญ๊ฒŒ 3์›”๋‹ฌ์˜ ๊ทœ์น™์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์ •์˜๋œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

month๊ฐ€ 1์ผ ๋•Œ๋Š” else์— ๋“ค์–ด๊ฐ€์„œ zeroIndex ๊ฐ’์ด 3์ด ๋œ๋‹ค. ์ฆ‰, 1์›” 31์ผ์ด 31 % 7 == 3์œผ๋กœ dates[3]์˜ 'WED'๊ฐ€ ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  2์›” 1์ผ์ด 'THU'๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ฆ‰, dates์˜ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ€ 'THU'๋กœ ๋ฐ”๋€Œ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. 

 

๊ทธ๋ž˜์„œ for๋ฌธ์„ ๋‹ค์‹œ ๋Œ๋ฉด์„œ dates.popleft()๋ฅผ 3๋ฒˆ ํ•ด์ฃผ๋ฉด SUN, MON, TUE ๊ฐ€ pop๋˜๊ณ  ๋‹ค์‹œ dates์— append๋˜์–ด,

dates = ['WED', 'THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE'] ํ˜•์‹์œผ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด 2์›”์—์„œ๋Š” y์ผ % 7์˜ ๊ฐ’์ด 0์ด๋ฉด ์ˆ˜์š”์ผ, 1์ด๋ฉด ๋ชฉ์š”์ผ, 2๋ฉด ๊ธˆ์š”์ผ... ์ด๋Ÿฐ์‹์˜ ํŒจํ„ด์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๊ฒŒ 3์›”๋‹ฌ์—๋„ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค๋ฉด 2์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋Š” 28 % 7 == 0: ์ฆ‰ ์ˆ˜์š”์ผ์ด๋‹ค. ๊ทธ๋Ÿผ 3์›” 1์ผ์€ ๋ชฉ์š”์ผ์ด ๋˜๊ณ , ๋‹ค์‹œ 2์›”๋‹ฌ์—์„œ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ Pop๊ณผ append๋ฅผ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— ์—ฐ์‚ฐ์ด ๋๋‚˜๊ณ  ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” print(dates[y%7])์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

<์ „์ฒด ์ฝ”๋“œ>

from sys import stdin
from collections import deque

x, y = map(int, stdin.readline().split())
zeroIndex = 1
dates = deque(['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'])

for month in range(1, x):
    if month==2: zeroIndex = 28%7
    elif month ==4 or month==6 or month==9 or month==11: zeroIndex = 30%7
    else: zeroIndex = 31%7
    for i in range(zeroIndex):
        dates.append(dates.popleft())

print(dates[y%7])