diff --git a/H0ngJu/README.md b/H0ngJu/README.md index ca2eabf0..35c4a92a 100644 --- a/H0ngJu/README.md +++ b/H0ngJu/README.md @@ -30,4 +30,5 @@ | 26차시 | 2024.08.24 | 그리디 | [신입사원](https://www.acmicpc.net/problem/1946) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/237 | | 27차시 | 2024.08.27 | DFS | [트리의 지름](https://www.acmicpc.net/problem/1967) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/240 | | 28차시 | 2024.09.04 | 벨만포드 | [타임머신](https://www.acmicpc.net/problem/11657) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/244 | ---- +| 29차시 | 2024.09.06 | 구현 | [톱니바퀴](https://www.acmicpc.net/problem/14891) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/245 | +--- \ No newline at end of file diff --git "a/H0ngJu/\352\265\254\355\230\204/\355\206\261\353\213\210\353\260\224\355\200\264.py" "b/H0ngJu/\352\265\254\355\230\204/\355\206\261\353\213\210\353\260\224\355\200\264.py" new file mode 100644 index 00000000..00242881 --- /dev/null +++ "b/H0ngJu/\352\265\254\355\230\204/\355\206\261\353\213\210\353\260\224\355\200\264.py" @@ -0,0 +1,64 @@ +import sys + +def input() : return sys.stdin.readline().rstrip() + +wheels = [list(int(r) for r in input()) for _ in range(4)] +score = 0 + +K = int(input()) +cmds = [list(map(int, input().split())) for _ in range(K)] + +def leftshift(arr): + tmp = arr[0] + for i in range(len(arr)-1): + arr[i] = arr[i+1] + arr[-1] = tmp + +def rightshift(arr): + tmp = arr[-1] + for i in range(len(arr) - 1, 0, -1): + arr[i] = arr[i-1] + arr[0] = tmp + + +for n, cmd in cmds: + n -= 1 + left_check = [False] * 4 + right_check = [False] * 4 + + if cmd == 1: + right_check[n] = True + else: + left_check[n] = True + + for i in range(n, 0, -1): + if wheels[i][6] != wheels[i-1][2]: + if left_check[i]: + right_check[i-1] = True + if right_check[i]: + left_check[i-1] = True + else: + break + + for i in range(n,3): + if wheels[i][2] != wheels[i+1][6]: + if left_check[i]: + right_check[i+1] = True + if right_check[i]: + left_check[i+1] = True + else: + break + + for i in range(4): + if left_check[i]: + leftshift(wheels[i]) + + if right_check[i]: + rightshift(wheels[i]) + + +for i in range(4): + if wheels[i][0] == 1: + score += 2**i + +print(score) \ No newline at end of file