๋ฐ์ํ
๋ฌธ์
ํ์ด
์ด์ฐจ์ ๋ฆฌ์คํธ์์ ๋งต์์ ๋ฑ์ด ์ด๋ํ๋๋ก ๋ฆฌ์คํธ์ ํน์ ์์น์์ ๋,๋จ,์,๋ถ์ ์์น๋ก ์ด๋ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค. ๋ํ, ๋ฑ์ ๋จธ๋ฆฌ๊ฐ ๋ฑ์ ๋ชธ์ ๋ฟ๋ ์๊ฐ ์ข ๋ฃํด์ผ ํ๋ฏ๋ก, ๋งค ์์ ๋ง๋ค ๋ฑ์ด ์กด์ฌํ๋ ์์น๋ฅผ ํญ์ ์ด์ฐจ์ ๋ฆฌ์คํธ์ ๊ธฐ๋กํด์ผ ํ๋ค.
n = int(input())
k = int(input())
data= [[0]*(n+1) for _ in range(n+1)]
info = []
for _ in range(k):
a,b = map(int,input().split())
data[a][b] = 1
l = int(input())
for _ in range(l):
x,c = input().split()
info.append((int(x),c))
# ๋,๋จ,์,๋ถ
dx = [0,1,0,-1]
dy = [1,0,-1,0]
def turn(direction, c):
if c=='L':
direction = (direction-1)%4
else :
direction = (direction+1)%4
return direction
def simulate():
x,y = 1,1 # ์ฒ์ ๋ฑ์ ์์น
data[x][y]=2 # ๋ฑ์ด ์๋ ๊ณณ์ 2๋ก
direction = 0 # ์ฒ์ ๋์ชฝ
time = 0
index = 0 # ๋ค์์ ํ์ ํ ์ ๋ณด
q = [(x,y)] # ๋ฑ์ด ์ฐจ์งํ๊ณ ์๋ ์์น ์ ๋ณด(๊ผฌ๋ฆฌ๊ฐ ์์ชฝ)
while True:
nx = x + dx[direction]
ny = y + dy[direction]
# ๋งต์ ๋ฒ์ ์์กฑ์ด๊ณ ๋ฑ์ ๋ชธํต์ด ์๋ ๊ณณ์ด๋ฉด
if 1 <= nx and nx <=n and 1<=ny and ny <=n and data[nx][ny] !=2 :
# ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด ์ด๋ ํ์ ๊ผฌ๋ฆฌ ์ ๊ฑฐ
if data[nx][ny] == 0:
data[nx][ny] = 2
q.append((nx,ny))
px, py = q.pop(0)
data[px][py] = 0
# ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด ์ด๋ ํ์ ๊ผฌ๋ฆฌ ๊ทธ๋๋ก
if data[nx][ny] == 1:
data[nx][ny] =2
q.append((nx,ny))
# ๋ฒฝ์ด๋ ๋ชธํต์ ๋ถ๋ชํ๋ค๋ฉด
else:
time +=1
break
x,y = nx, ny # ๋ค์ ์์น๋ก ๋จธ๋ฆฌ ์ด๋
time += 1
if index < l and time == info[index][0] : # ํ์ ํ ์๊ฐ์ธ ๊ฒฝ์ฐ ํ์
direction = turn(direction,info[index][1])
index += 1
return time
๋ฐ์ํ
'๐ป Programming > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค_์นด์นด์ค21_๋ฉ๋ด ๋ฆฌ๋ด์ผ (์์ ํ์, combinations) (0) | 2022.02.21 |
---|---|
[python] ํ๋ก๊ทธ๋๋จธ์ค_์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (๊ตฌํ) (0) | 2022.02.15 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_์คํจ์จ (์ ๋ ฌ) (0) | 2022.02.15 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_ํ๋ฆฐํฐ (์คํํ) (0) | 2022.02.14 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_๋ฌธ์์ด ์์ถ (์์ ํ์) (0) | 2022.02.14 |