๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[๋ฐฑ์ค 14891] ํฑ๋๋ฐํด (Python)
โ๏ธIdea Sketch
2021-08-09
1. ๋ฌธ์ ์ดํดํ๊ธฐ
- ํฑ๋๋ฐํด๋ ํ ์นธ ์ด๋์ ๊ธฐ์ค์ผ๋ก, K๋ฒ ํ์ ํ๋ค.
- ์๊ณ or ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค.
- A๊ฐ ํ์ ํ๊ธฐ ์
- B์ ๊ทน์ด ๋ค๋ฅธ ๊ฒฝ์ฐ, B๋ A์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค.
- B์ ๊ทน์ด ๊ฐ์ ๊ฒฝ์ฐ, B๋ ํ์ ํ์ง ์๋๋ค.
2. ์ ๋ ฅ๊ฐ ์ดํด๋ณด๊ธฐ
- 12์๋ถํฐ ์๊ณ๋ฐฉํฅ
- 0์ N๊ทน, 1์ S๊ทน
- ํ์ ํ์ K
- ํ์ ํ ํฑ๋๋ฐํด ๋ฒํธ(num) ๋ฐ ํ์ ๋ฐฉํฅ
- 1์ ์๊ณ๋ฐฉํฅ
- -1๋ ๋ฐ์๊ณ๋ฐฉํฅ
3. ์ฌ๊ท์ ๋ก์ง
- ์์ 1 ์ฐธ๊ณ ) ํฑ๋๋ฐํด 3์ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ์์ผ๋ณด์.
ํฑ๋๋ฐํด 3๊ณผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ธ์ ํ ํฑ๋๋ฐํด 4๋ฅผ ์ดํด๋ณด์.
recursion()
- graph[3][2]์ graph[4][6]์ ๋ ๊ทน์ด
- ๋ค๋ฅธ ๊ฒฝ์ฐ, ํฑ๋๋ฐํด 4๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค.
handle_rotation()
- ๊ฐ์ ๊ฒฝ์ฐ, ํฑ๋๋ฐํด 4๋ ํ์ ํ์ง ์๋๋ค.
- ํฑ๋๋ฐํด 4๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ์์ผ๋ณด์.
- ๋ค๋ฅธ ๊ฒฝ์ฐ, ํฑ๋๋ฐํด 4๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค.
- graph[3][2]์ graph[4][6]์ ๋ ๊ทน์ด
ํฑ๋๋ฐํด 3๊ณผ ์ผ์ชฝ์ผ๋ก ์ธ์ ํ ํฑ๋๋ฐํด 2๋ฅผ ์ดํด๋ณด์.
recursion()
- graph[3][6]๊ณผ graph[2][2]์ ๋ ๊ทน์ด
- ๋ค๋ฅธ ๊ฒฝ์ฐ, ํฑ๋๋ฐํด 2๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค.
handle_rotation()
- ๊ฐ์ ๊ฒฝ์ฐ, ํฑ๋๋ฐํด 2๋ ํ์ ํ์ง ์๋๋ค.
- ํฑ๋๋ฐํด 2๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ์์ผ๋ณด์.
- ๋ค๋ฅธ ๊ฒฝ์ฐ, ํฑ๋๋ฐํด 2๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค.
- graph[3][6]๊ณผ graph[2][2]์ ๋ ๊ทน์ด
โ๏ธ์์ค์ฝ๋
2021-08-09 72ms ํต๊ณผ
import sys
def recursion(num, rotation, vs): # ํฑ๋๋ฐํด ๋ฒํธ, ํ์ ๋ฐฉํฅ, ์ธ์ ํ ํฑ๋๋ฐํด (1 or -1)
if (0<num+vs<=4):
if vs == 1: # ์ค๋ฅธ์ชฝ์ผ๋ก ์ธ์ ํ ํฑ๋๋ฐํด
if graph[num][2] != graph[num+vs][6]:
recursion(num+vs, -rotation, vs)
handle_rotation(num+vs, -rotation)
else: # ์ผ์ชฝ์ผ๋ก ์ธ์ ํ ํฑ๋๋ฐํด
if graph[num][6] != graph[num+vs][2]:
recursion(num+vs, -rotation, vs)
handle_rotation(num+vs, -rotation)
def handle_rotation(num, rotation):
if rotation == 1: # ์๊ณ๋ฐฉํฅ
graph[num].insert(0, graph[num].pop())
else: # ๋ฐ์๊ณ๋ฐฉํฅ
graph[num].append(graph[num][0])
del graph[num][0]
if __name__ == "__main__":
graph = [[0, 0, 0, 0, 0, 0, 0, 0]]
for _ in range(4):
graph.append(list(map(int, sys.stdin.readline().rstrip())))
k = int(input())
for _ in range(k):
num, rotation = map(int, sys.stdin.readline().rstrip().split())
recursion(num, rotation, 1)
recursion(num, rotation, -1)
handle_rotation(num, rotation)
result = graph[1][0]
result += graph[2][0]*2
result += graph[3][0]*4
result += graph[4][0]*8
print(result)