โ๋ฌธ์
https://www.acmicpc.net/problem/14891
๋ฉ๋ชจ๋ฆฌ: 112308 KB, ์๊ฐ: 112 ms
์ด 8๊ฐ์ ํฑ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํฑ๋๋ฐํด 4๊ฐ๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๋ ฌ๋ก ๋์ฌ์ ธ ์๋ค. ๋, ํฑ๋๋ N๊ทน ๋๋ S๊ทน ์ค ํ๋๋ฅผ ๋ํ๋ด๊ณ ์๋ค. ํฑ๋๋ฐํด์๋ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋๋ฐ, ๊ฐ์ฅ ์ผ์ชฝ ํฑ๋๋ฐํด๊ฐ 1๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 2๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 3๋ฒ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด๋ 4๋ฒ์ด๋ค.
์ด๋, ํฑ๋๋ฐํด๋ฅผ ์ด K๋ฒ ํ์ ์ํค๋ ค๊ณ ํ๋ค. ํฑ๋๋ฐํด์ ํ์ ์ ํ ์นธ์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ํ์ ์ ์๊ณ ๋ฐฉํฅ๊ณผ ๋ฐ์๊ณ ๋ฐฉํฅ์ด ์๊ณ , ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ ํ๋ค.
ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํค๋ ค๋ฉด, ํ์ ์ํฌ ํฑ๋๋ฐํด์ ํ์ ์ํฌ ๋ฐฉํฅ์ ๊ฒฐ์ ํด์ผ ํ๋ค. ํฑ๋๋ฐํด๊ฐ ํ์ ํ ๋, ์๋ก ๋ง๋ฟ์ ๊ทน์ ๋ฐ๋ผ์ ์์ ์๋ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํฌ ์๋ ์๊ณ , ํ์ ์ํค์ง ์์ ์๋ ์๋ค. ํฑ๋๋ฐํด A๋ฅผ ํ์ ํ ๋, ๊ทธ ์์ ์๋ ํฑ๋๋ฐํด B์ ์๋ก ๋ง๋ฟ์ ํฑ๋์ ๊ทน์ด ๋ค๋ฅด๋ค๋ฉด, B๋ A๊ฐ ํ์ ํ ๋ฐฉํฅ๊ณผ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
๋ ํฑ๋๋ฐํด์ ๋ง๋ฟ์ ๋ถ๋ถ์ ์ด๋ก์ ์ ์ ์ผ๋ก ๋ฌถ์ฌ์๋ ๋ถ๋ถ์ด๋ค. ์ฌ๊ธฐ์, 3๋ฒ ํฑ๋๋ฐํด๋ฅผ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค๋ฉด, 4๋ฒ ํฑ๋๋ฐํด๋ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 2๋ฒ ํฑ๋๋ฐํด๋ ๋ง๋ฟ์ ๋ถ๋ถ์ด S๊ทน์ผ๋ก ์๋ก ๊ฐ๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๊ณ , 1๋ฒ ํฑ๋๋ฐํด๋ 2๋ฒ์ด ํ์ ํ์ง ์์๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๋ค. ๋ฐ๋ผ์, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์์ ๋ง๋ค๊ฒ ๋๋ค.
์์ ๊ฐ์ ์ํ์์ 1๋ฒ ํฑ๋๋ฐํด๋ฅผ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ฉด, 2๋ฒ ํฑ๋๋ฐํด๊ฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๊ณ , 2๋ฒ์ด ํ์ ํ๊ธฐ ๋๋ฌธ์, 3๋ฒ๋ ๋์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 4๋ฒ์ 3๋ฒ์ด ํ์ ํ์ง๋ง, ๋ง๋ฟ์ ๊ทน์ด ๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ ํ์ง ์๋๋ค. ๋ฐ๋ผ์, ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.
ํฑ๋๋ฐํด์ ์ด๊ธฐ ์ํ์ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์ฃผ์ด์ก์ ๋, ์ต์ข ํฑ๋๋ฐํด์ ์ํ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ๐ปํ์ด
์ฐ์ ํฑ๋๋ฐํด๊ฐ ๋์๊ฐ๋ ค๋ฉด ๋ง๋ฟ์์๋ ๋ถ๋ถ์ด ์๋ก ๋ค๋ฅธ ๊ทน์ ๊ฐ๊ณ ์์ด์ผ ํ๋ค. ์ด๋ ๋ง๋ฟ์ ์๋ ๋ถ๋ถ์ด 1๋ฒ์ ์ผ์ชฝ๋ง ์๊ณ 4๋ฒ์ ์ค๋ฅธ์ชฝ๋ง ์๋ค. ๊ทธ๋ฆฌ๊ณ 2๋ฒ๊ณผ 3๋ฒ์ ์์ชฝ์ด ๋ง๋ฟ์์๋ค. ํ ํฑ๋๋ฐํด๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ฆฌ๋ฉด ๋ง๋ฟ์์๋ ๋ถ๋ถ์ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๊ฒ ๋๋ค. ์ ๊ทธ๋ฆผ์ ํ ์คํธ์ผ์ด์ค 1๋ฒ์ ํํํ ๊ฒ์ด๋ค.
๋ง๋ฟ์ ์๋ ๋ถ๋ถ์ ํ์ธํ๊ธฐ ์ํด ์ค๋ฅธ์ชฝ๊ณผ ์ผ์ชฝ์ผ๋ก ํจ์๋ฅผ ๋๋์๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ ํฑ๋๋ฐํด๊ฐ 2๋ฒ์ด๊ณ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ฆฐ๋ค๊ณ ํด๋ณด์. ๊ทธ๋ฆฌ๊ณ 1๋ฒ๊ณผ 2๋ฒ์ ๋ง๋ฟ์ ์๋ ๋ถ๋ถ์ด ์๋ก ๋ค๋ฅด๊ณ 2๋ฒ๊ณผ 3๋ฒ๋ ๋ง๋ฟ์์๋ ๋ถ๋ถ์ด ์๋ก ๋ค๋ฅธ ๊ทน์ ๊ฐ๊ณ ์๋ค. ๊ทธ๋ฌ๋ฉด 2๋ฒ ํฑ๋๋ฐํด๋ฅผ ๋๋ฆฌ๊ธฐ ์ ์ 3๋ฒ๊ณผ 4๋ฒ์ ๋ง๋ฟ์์๋ ๋ถ๋ถ์ด ์๋ก ๋ค๋ฅธ์ง ํ์ธํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ฅธ์ชฝ๊ณผ ์ผ์ชฝ์ ๊ณ์ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ์ ํ์ฌ ํฑ๋๋ฐํด ๋ฒํธ๊ฐ 0๋ฏธ๋ง์ด๋ผ๋ฉด ๋ฉ์ถ๊ณ , ์ค๋ฅธ์ชฝ์ ํ์ฌ ํฑ๋๋ฐํด ๋ฒํธ๊ฐ 3์ ์ด๊ณผํ๋ฉด ๋ฉ์ถ๋๋ก ํ๋ฉด ๋๋ค.
์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋ชจ๋ ์๋ก ๋ง๋ฟ์์๋ ๋ถ๋ถ์ ํ์ธํ๊ณ ์ดํ์๋ ํ์ฌ ํฑ๋๋ฐํด๋ฅผ deque์ rotate ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฐฉํฅ์ ๋๋ฆฌ๋ฉด ๋๋ค. rotate ํจ์๋ ์์์ธ ๊ฒฝ์ฐ์๋ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๊ณ ์์์ธ ๊ฒฝ์ฐ์๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋ค.
๐ป์ฝ๋
from collections import deque
wheels = [deque(list(map(int, input()))) for _ in range(4)]
K = int(input())
def left(c, r):
global wheels
if c < 0:
return
if wheels[c+1][6] != wheels[c][2]:
left(c - 1, -r)
wheels[c].rotate(r)
def right(c, r):
global wheels
if c > 3:
return
if wheels[c-1][2] != wheels[c][6]:
right(c + 1, -r)
wheels[c].rotate(r)
for _ in range(K):
n, r = map(int, input().split())
left(n - 2, -r)
right(n, -r)
wheels[n - 1].rotate(r)
ans = 0
for i in range(4):
if wheels[i][0]: # wheels[i][0]๊ฐ 1์ด๋ฉด
ans += 2 ** i # 2์ i ์ ๊ณฑ
print(ans)
๐ํ๊ธฐ
์ฒ์์๋ DFS์ธ์ง ๋ฐฑํธ๋ํน์ธ์ง ๊ณ ๋ฏผํ๋๋ฐ ์๋ฌด๋ฆฌ ์๊ฐํด๋ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ํ ํ์๊ฐ ์์ด ๋ณด์ฌ์ ์ฌ๊ทํจ์๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ง ๊ณ ๋ฏผํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ฅธ์ชฝ ์ผ์ชฝ ๋ ๊ฐ๋ก ๋๋ ์ ํ๋ค๋ณด๋ ์ด๋ป๊ฒ ํ์ด์ผ ํ ์ง ๋ณด์๋ค. ๋ญ๊ฐ ์ ์ ๋ด๊ฐ ์ฑ์ฅํ๋ ๊ธฐ๋ถ๐
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 3190. ๋ฑ/Python - Gold4 (3) | 2025.07.30 |
---|---|
[๋ฐฑ์ค] 14503. ๋ก๋ด ์ฒญ์๊ธฐ/Python - Gold5 (1) | 2025.07.29 |
[๋ฐฑ์ค] 14501. ํด์ฌ/Python - Silver3 (1) | 2025.07.23 |
[SWEA] 2819. ๊ฒฉ์ํ์ ์ซ์ ์ด์ด๋ถ์ด๊ธฐ/Python - D4 (0) | 2025.07.22 |
[SWEA] 1242. ์ํธ์ฝ๋ ์ค์บ/Python - D5 (1) | 2025.07.21 |