ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์์ ๋ค๋ฃฌ ํฑ๋๋ฐํด ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ์๋ค๋ฉด, ๋ช ๊ฐ์ง ์กฐ๊ฑด๋ง ์ถ๊ฐํ๋ฉด ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๋ค. ์ด์ ์ ๋ฌธ์ ๋ ํฑ๋๋ฐํด์ ๊ฐ์๊ฐ 4๊ฐ๋ก ๊ณ ์ ๋์ด ์์์ง๋ง, ์ด ๋ฌธ์ ์์๋ ํฑ๋๋ฐํด์ ์๊ฐ T๋ก ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค. ๋ํ ์ถ๋ ฅ์ K๋ฒ ํ์ ์ํจ ํ 12์ ๋ฐฉํฅ์ด S๊ทน์ธ ํฑ๋๋ฐํด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
์ฝ๋
from sys import stdin
from collections import deque
def move_gear(idx, cur_dir):
global cur_right, cur_left, gears
origin_dir = cur_dir
# ํ์ฌ ํฑ๋๋ฐํด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ข์ธก์ ํฑ๋๋ฐํด๋ค ํ์ธ.
for i in reversed(range(idx)):
if cur_right != gears[i][LEFT]:
cur_right = gears[i][RIGHT]
gears[i].rotate(cur_dir * -1)
cur_dir *= -1
else:
break
cur_dir = origin_dir
# ํ์ฌ ํฑ๋๋ฐํด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ธก์ ํฑ๋๋ฐํด๋ค ํ์ธ.
for i in range(idx + 1, t):
if gears[i][RIGHT] != cur_left:
cur_left = gears[i][LEFT]
gears[i].rotate(cur_dir * -1)
cur_dir *= -1
else:
break
if __name__ == '__main__':
LEFT, RIGHT = 2, 6
t = int(stdin.readline())
gears = [deque(map(int, stdin.readline().strip())) for _ in range(t)]
k = int(stdin.readline())
orders = [list(map(int, stdin.readline().split())) for _ in range(k)]
for gear_idx, direction in orders:
gear_idx -= 1
cur_left, cur_right = gears[gear_idx][LEFT], gears[gear_idx][RIGHT]
gears[gear_idx].rotate(direction)
move_gear(gear_idx, direction)
print(sum([1 if gear[0] else 0 for delta, gear in enumerate(gears)]))
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2210 ์ซ์ํ ์ ํ (0) | 2020.09.24 |
---|---|
๋ฐฑ์ค: 3568 iSharp (0) | 2020.09.24 |
๋ฐฑ์ค: 14891 ํฑ๋๋ฐํด (0) | 2020.09.23 |
๋ฐฑ์ค: 14499 ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ (0) | 2020.09.23 |
๋ฐฑ์ค: 14890 ๊ฒฝ์ฌ๋ก (0) | 2020.09.22 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ