์ผ์ฑ SW ์ญ๋ ํ ์คํธ ๊ธฐ์ถ ๋ฌธ์ - 14891๋ฒ ํฑ๋ ๋ฐํด
๋ฌธ์
์ด 8๊ฐ์ ํฑ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํฑ๋๋ฐํด 4๊ฐ๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๋ ฌ๋ก ๋์ฌ์ ธ ์๋ค. ๋, ํฑ๋๋ N๊ทน ๋๋ S๊ทน ์ค ํ๋๋ฅผ ๋ํ๋ด๊ณ ์๋ค. ํฑ๋๋ฐํด์๋ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋๋ฐ, ๊ฐ์ฅ ์ผ์ชฝ ํฑ๋๋ฐํด๊ฐ 1๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 2๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 3๋ฒ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด๋ 4๋ฒ์ด๋ค.
์ด๋, ํฑ๋๋ฐํด๋ฅผ ์ด K๋ฒ ํ์ ์ํค๋ ค๊ณ ํ๋ค. ํฑ๋๋ฐํด์ ํ์ ์ ํ ์นธ์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ํ์ ์ ์๊ณ ๋ฐฉํฅ๊ณผ ๋ฐ์๊ณ ๋ฐฉํฅ์ด ์๊ณ , ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ ํ๋ค.
ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํค๋ ค๋ฉด, ํ์ ์ํฌ ํฑ๋๋ฐํด์ ํ์ ์ํฌ ๋ฐฉํฅ์ ๊ฒฐ์ ํด์ผ ํ๋ค. ํฑ๋๋ฐํด๊ฐ ํ์ ํ ๋, ์๋ก ๋ง๋ฟ์ ๊ทน์ ๋ฐ๋ผ์ ์์ ์๋ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํฌ ์๋ ์๊ณ , ํ์ ์ํค์ง ์์ ์๋ ์๋ค. ํฑ๋๋ฐํด A๋ฅผ ํ์ ํ ๋, ๊ทธ ์์ ์๋ ํฑ๋๋ฐํด B์ ์๋ก ๋ง๋ฟ์ ํฑ๋์ ๊ทน์ด ๋ค๋ฅด๋ค๋ฉด, B๋ A๊ฐ ํ์ ํ ๋ฐฉํฅ๊ณผ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
์์ ๊ฐ์ ์ํ์์ 1๋ฒ ํฑ๋๋ฐํด๋ฅผ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ฉด, 2๋ฒ ํฑ๋๋ฐํด๊ฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๊ณ , 2๋ฒ์ด ํ์ ํ๊ธฐ ๋๋ฌธ์, 3๋ฒ๋ ๋์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 4๋ฒ์ 3๋ฒ์ด ํ์ ํ์ง๋ง, ๋ง๋ฟ์ ๊ทน์ด ๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ ํ์ง ์๋๋ค. ๋ฐ๋ผ์, ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.
ํฑ๋๋ฐํด์ ์ด๊ธฐ ์ํ์ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์ฃผ์ด์ก์ ๋, ์ต์ข ํฑ๋๋ฐํด์ ์ํ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 1๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋์งธ ์ค์ 2๋ฒ ํฑ๋๋ฐํด์ ์ํ, ์ ์งธ ์ค์ 3๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋ท์งธ ์ค์ 4๋ฒ ํฑ๋๋ฐํด์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. ์ํ๋ 8๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , 12์๋ฐฉํฅ๋ถํฐ ์๊ณ๋ฐฉํฅ ์์๋๋ก ์ฃผ์ด์ง๋ค. N๊ทน์ 0, S๊ทน์ 1๋ก ๋ํ๋์๋ค.
๋ค์ฏ์งธ ์ค์๋ ํ์ ํ์ K(1 ≤ K ≤ 100)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ K๊ฐ ์ค์๋ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ๊ฐ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ฒซ ๋ฒ์งธ ์ ์๋ ํ์ ์ํจ ํฑ๋๋ฐํด์ ๋ฒํธ, ๋ ๋ฒ์งธ ์ ์๋ ๋ฐฉํฅ์ด๋ค. ๋ฐฉํฅ์ด 1์ธ ๊ฒฝ์ฐ๋ ์๊ณ ๋ฐฉํฅ์ด๊ณ , -1์ธ ๊ฒฝ์ฐ๋ ๋ฐ์๊ณ ๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ด K๋ฒ ํ์ ์ํจ ์ดํ์ ๋ค ํฑ๋๋ฐํด์ ์ ์์ ํฉ์ ์ถ๋ ฅํ๋ค. ์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ๋ค.
- 1๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 1์
- 2๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 2์
- 3๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 4์
- 4๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 8์
์์ ์ ๋ ฅ1
10101111
01111101
11001110
00000010
2
3 -1
1 1
์์ ์ถ๋ ฅ1
7
ํ์ด
- n์ 2์ ๊ณฑ ๊ตฌํ๊ธฐ : n ** 2
- deque().rotate() ์ฌ์ฉ
- rotate() ํจ์ ์์ ์์๋ฅผ ๋ฃ์ผ๋ฉด ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก, ์์๋ฅผ ๋ฃ์ผ๋ฉด ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ซ์๋งํผ ํ์ ํ๋ค
→ ex) rotate(1)์ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก 1๋ฒ ํ์ , rotate(-1)์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก 1๋ฒ ํ์ ํ๋ค
from collections import deque
def right(idx, d): # ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด ํ์ธ
# ๋ง์ง๋ง ํฑ๋๋ ํ์ธ ์ํจ
if idx > 3:
return
# ๊ฐ์ ๊ทน์ด ์๋๋ฉด ํ์
if sawtooth[idx - 1][2] != sawtooth[idx][6]:
right(idx + 1, -d)
sawtooth[idx].rotate(d)
def left(idx, d):
# ์ฒซ๋ฒ์งธ ํฑ๋๋ ํ์ธํ์ง ์์
if idx < 0:
return
# ๊ฐ์ ๊ทน์ด ์๋๋ฉด ํ์
if sawtooth[idx][2] != sawtooth[idx + 1][6]:
left(idx - 1, -d)
sawtooth[idx].rotate(d)
# ํฑ๋๋ฐํด 4๊ฐ ์
๋ ฅ๋ฐ๊ธฐ
sawtooth = [deque(list(map(int, input()))) for _ in range(4)]
k = int(input()) # ํ์ ํ์
for _ in range(k):
# ํ์ ์ ๋ณด(ํ์ ํฑ๋ ๋ฒํธ ์ธ๋ฑ์ค, ํ์ ๋ฐฉํฅ) ์
๋ ฅ๋ฐ๊ธฐ
idx, d = map(int, input().split())
idx -= 1
# ํ์ ํ ํฑ๋ ๋ฒํธ์ ์๊ณ๋ฐฉํฅ, ๋ฐ์๊ณ๋ฐฉํฅ์ด ํ์ ๊ฐ๋ฅํ์ง ํ์ธํ๊ณ ํ์ ํ๋ค
# -d์ธ ์ด์ ๋ ํ์ ํ ํฑ๋๋ฒํธ๊ฐ ํ์ ํ๋ ๋ฐฉํฅ์ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ํ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ
left(idx - 1, -d)
right(idx + 1, -d)
# ํ์ ํ ํฑ๋ ๋ฒํธ์ ํฑ๋๋ ํ์
sawtooth[idx].rotate(d)
# ์ ์ ๊ณ์ฐํ์ฌ ์ถ๋ ฅ
score = 0
for i in range(4):
if sawtooth[i][0] == 1:
score += 2 ** i
print(score)
์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ
- ๊ตฌํ
- ์๋ฎฌ๋ ์ด์
์ฐธ๊ณ ์ฌ์ดํธ