[BOJ][๐ก5][๋ฐฑ์ค#15662] ํฑ๋๋ฐํด (2)
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์ด 8๊ฐ์ ํฑ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํฑ๋๋ฐํด T๊ฐ๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๋ ฌ๋ก ๋์ฌ์ ธ ์๋ค. ๋,ย ํฑ๋๋ N๊ทน ๋๋ S๊ทน ์ค ํ๋๋ฅผ ๋ํ๋ด๊ณ ์๋ค. ํฑ๋๋ฐํด์๋ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋๋ฐ, ๊ฐ์ฅ ์ผ์ชฝ ํฑ๋๋ฐํด๊ฐ 1๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 2๋ฒ,ย โฆ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด๋ T๋ฒ์ด๋ค. ์๋ ๊ทธ๋ฆผ์ T๊ฐ 4์ธ ๊ฒฝ์ฐ์ด๋ค.
์ด๋, ํฑ๋๋ฐํด๋ฅผ ์ด K๋ฒ ํ์ ์ํค๋ ค๊ณ ํ๋ค. ํฑ๋๋ฐํด์ ํ์ ์ ํ ์นธ์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ํ์ ์ ์๊ณ ๋ฐฉํฅ๊ณผ ๋ฐ์๊ณ ๋ฐฉํฅ์ด ์๊ณ , ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ ํ๋ค.
ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํค๋ ค๋ฉด, ํ์ ์ํฌ ํฑ๋๋ฐํด์ย ํ์ ์ํฌ ๋ฐฉํฅ์ ๊ฒฐ์ ํด์ผ ํ๋ค. ํฑ๋๋ฐํด๊ฐ ํ์ ํ ๋, ์๋ก ๋ง๋ฟ์ ๊ทน์ ๋ฐ๋ผ์ ์์ ์๋ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํฌ ์๋ ์๊ณ , ํ์ ์ํค์ง ์์ ์๋ ์๋ค. ํฑ๋๋ฐํด A๋ฅผ ํ์ ํ ๋, ๊ทธ ์์ ์๋ ํฑ๋๋ฐํด B์ ์๋ก ๋ง๋ฟ์ ํฑ๋์ ๊ทน์ด ๋ค๋ฅด๋ค๋ฉด, B๋ A๊ฐ ํ์ ํ ๋ฐฉํฅ๊ณผ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
๋ ํฑ๋๋ฐํด์ ๋ง๋ฟ์ ๋ถ๋ถ์ ์ด๋ก์ ์ ์ ์ผ๋ก ๋ฌถ์ฌ์๋ ๋ถ๋ถ์ด๋ค. ์ฌ๊ธฐ์, 3๋ฒ ํฑ๋๋ฐํด๋ฅผย ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค๋ฉด, 4๋ฒ ํฑ๋๋ฐํด๋ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 2๋ฒ ํฑ๋๋ฐํด๋ ๋ง๋ฟ์ ๋ถ๋ถ์ด S๊ทน์ผ๋ก ์๋ก ๊ฐ๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๊ณ , 1๋ฒ ํฑ๋๋ฐํด๋ 2๋ฒ์ด ํ์ ํ์ง ์์๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๋ค. ๋ฐ๋ผ์, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์์ ๋ง๋ค๊ฒ ๋๋ค.
์์ ๊ฐ์ย ์ํ์์ 1๋ฒ ํฑ๋๋ฐํด๋ฅผ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ฉด, 2๋ฒ ํฑ๋๋ฐํด๊ฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๊ณ , 2๋ฒ์ด ํ์ ํ๊ธฐ ๋๋ฌธ์, 3๋ฒ๋ ๋์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 4๋ฒ์ 3๋ฒ์ด ํ์ ํ์ง๋ง, ๋ง๋ฟ์ ๊ทน์ด ๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ ํ์ง ์๋๋ค. ๋ฐ๋ผ์, ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.
ํฑ๋๋ฐํด T๊ฐ์ ์ด๊ธฐ ์ํ์ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์ฃผ์ด์ก์ ๋, ์ต์ข ํฑ๋๋ฐํด์ ์ํ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํฑ๋๋ฐํด์ ๊ฐ์ T (1 โค T โค 1,000)๊ฐ ์ฃผ์ด์ง๋ค.ย ๋์งธ ์ค๋ถํฐ T๊ฐ์ ์ค์ ํฑ๋๋ฐํด์ ์ํ๊ฐ ๊ฐ์ฅ ์ผ์ชฝ ํฑ๋๋ฐํด๋ถํฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ํ๋ 8๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , 12์๋ฐฉํฅ๋ถํฐ ์๊ณ๋ฐฉํฅ ์์๋๋ก ์ฃผ์ด์ง๋ค. N๊ทน์ 0, S๊ทน์ 1๋ก ๋ํ๋์๋ค. ๋ค์ ์ค์๋ ํ์ ํ์ K(1 โค K โค 1,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ K๊ฐ ์ค์๋ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ๊ฐ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ฒซ ๋ฒ์งธ ์ ์๋ ํ์ ์ํจ ํฑ๋๋ฐํด์ ๋ฒํธ, ๋ ๋ฒ์งธ ์ ์๋ ๋ฐฉํฅ์ด๋ค. ๋ฐฉํฅ์ด 1์ธ ๊ฒฝ์ฐ๋ ์๊ณ ๋ฐฉํฅ์ด๊ณ , -1์ธ ๊ฒฝ์ฐ๋ ๋ฐ์๊ณ ๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ด K๋ฒ ํ์ ์ํจ ์ดํ์ 12์๋ฐฉํฅ์ดย S๊ทน์ธ ํฑ๋๋ฐํด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์
์์ 1
์ ๋ ฅ
4
10101111
01111101
11001110
00000010
2
3 -1
1 1
์ถ๋ ฅ
3
์์ 2
์ ๋ ฅ
4
11111111
11111111
11111111
11111111
3
1 1
2 1
3 1
์ถ๋ ฅ
4
์์ 3
์ ๋ ฅ
4
10001011
10000011
01011011
00111101
5
1 1
2 1
3 1
4 1
1 -1
์ถ๋ ฅ
2
์์ 4
์ ๋ ฅ
4
10010011
01010011
11100011
01010101
8
1 1
2 1
3 1
4 1
1 -1
2 -1
3 -1
4 -1
์ถ๋ ฅ
2
์์ 5
์ ๋ ฅ
5
10010011
01010011
11100011
01010101
01010011
10
1 1
2 1
3 1
4 1
1 -1
2 -1
3 -1
4 -1
5 1
5 -1
์ถ๋ ฅ
5
My Sol
from collections import deque
def main():
def make_wheels():
wheels = []
for _ in range(T):
wheels.append(deque())
lst = list(map(int, input()))
for i in lst:
wheels[-1].append(i)
return wheels
def turn(n, d):
if n in turned: return
turned.add(n)
if n-1>=0 and wheels[n][6]^wheels[n-1][2]:
turn(n-1, -d)
if n+1<T and wheels[n][2]^wheels[n+1][6]:
turn(n+1, -d)
if d==1:
k = wheels[n].pop()
wheels[n].appendleft(k)
else:
k = wheels[n].popleft()
wheels[n].append(k)
T = int(input())
wheels = make_wheels()
N = int(input())
for _ in range(N):
n, d = map(int, input().split())
turned = set()
turn(n-1, d)
ret = 0
for wheel in wheels:
if wheel[0]: ret += 1
return ret
print(main())
์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ DFS๋ฅผ ์ฌ์ฉํ์์ผ๋, ํฑ๋๋ฐํด์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ๋์๋ deque๋ฅผ ์ฌ์ฉํ๋ค.
- ๊ฐ ํฑ๋๋ฐํด์ ์ ๋ณด๋ฅผ
wheels
๋ฐฐ์ด์ deque์ ๋ด์ ์ ์ฅํ์ 2์ฐจ์ ๋ฐฐ์ด์make_wheels
๋ผ๋ ํจ์๋ฅผ ํตํด์ ๊ตฌํํ๋ค. - ๋ช ๋ฒ์งธ ํฑ๋๋ฐํด๋ฅผ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๋๋ฆด ๊ฒ์ธ์ง ์ ๋ณด๋ฅผ N๋ฒ ๋ฐ์ ์งํํ๋๋ฐ, ๋๋ฆฌ๋ ๊ฒ์
turn
ํจ์๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ค. - ์ฒซ ํฑ๋๋ฐํด๊ฐ ๋์๊ฐ๋ฉฐ ์ ์์ ํฑ๋๋ฐํด๋ฅผ ๋๋ฆฌ๋๋ฐ, ์ด๋ ํ ๋ฒ ๋์๊ฐ ํฑ๋๋ฐํด๋ฅผ ์ค๋ณต์ผ๋ก ๋๋ฆฌ์ง ์๊ธฐ ์ํด์
turned
๋ผ๋ set์ ๋์ด ๋์๊ฐ ํฑ๋๋ฐํด์ ๋ฒํธ๋ฅผ ๋ฑ๋กํ๋ค. - ํ์ฌ ํฑ๋๋ฐํด์ ๋ง๋ฟ์์๋ ํฑ๋๋ฐํด์ S, N์ด ์๋ก ๋ค๋ฅด๋ค๋ฉด ํด๋น ํฑ๋๋ฐํด๋ ํ์ฌ ํ์ ๋ฐฉํฅ๊ณผ ๋ฐ๋๋๋ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋๋ก
turn
ํจ์๋ฅผ ์ถ๊ฐ๋ก ํธ์ถํด์ค๋ค. ์ด๋ S, N์ด ๋ค๋ฅด๋ค๋ฉด 0๊ณผ 1์ด ์๊ธฐ ๋๋ฌธ์ ๋นํธ๋ง์คํน์ XOR ์ฐ์ฐ์ผ๋ก ์์ฝ๊ฒ ํ์ธํ๋ค. - ์ข์ฐ์ ํฑ๋๋ฐํด๋ก ์ ๋ณด๋ก ๋จผ์ ์ ๋ฌํด์ค ์ด์ ๋, ๋์๊ฐ๊ธฐ ์ด์ ์ ํฑ๋ ์ ๋ณด๋ก ์ข์ฐ ํฑ๋๋ฐํด๋ฅผ ๋๋ ค์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋๋ฌธ์ ์ข์ฐ๋ฅผ ํ์ธํด
turn
ํจ์๋ฅผ ๋๊ธฐ๊ณ , ํ์ ๋ฐฉํฅ์ ๊ณ ๋ คํด ๋ค์์ ๋นผ์ ์์ ๋ฃ์ด์ค์ง, ์์์ ๋นผ์ ๋ค๋ก ๋ฃ์ด์ค์ง๋ฅผ ๊ฒฐ์ ํ๋ค. - ์ด ์ผ๋ จ์ ๊ณผ์ ์ Nํ ๋ฐ๋ณตํ๊ณ ๋จ์
wheels
์ ๊ฐ deque์ 0๋ฒ ์ธ๋ฑ์ค ๊ฐ, ์ฆ 12์ ๋ฐฉํฅ ํฑ๋๋ฅผ ๋ชจ๋ ๋ํด์ค ๊ฐ์ ๋ฐํํ์ฌ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ