๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[๋ฐฑ์ค 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)