3190-๋ฑ
( x, y ) ๋ ํ์ฌ ๋จธ๋ฆฌ์ ์์น์ ๋๋ค.
๋งค์ด๋ง๋ค d ( ๋ฐฉํฅ ) ์ด ๋ณํ๋์ง ๊ฒ์ฌํ๊ณ ์ํฉ์ ๋ง๊ฒ ์ ์ฉํด์ค๋๋ค.
( nx, ny ) ๋ ๋ค์ ๋จธ๋ฆฌ๊ฐ ์์นํ ๊ณณ์ ๋๋ค.
q ๋ ํ์ฌ ๋ฑ์ ๋ชธ์ด ์กด์ฌํ๋ ์์น๋ค์ ๋๋ค.
๋งค์ด๋ง๋ค ( nx, ny ) ์ ์์ ์ ๋ชธ์ด ์๊ฑฐ๋ ๋ฒฝ์ด๋ผ๋ฉด ์๊ฐ์ ์ถ๋ ฅํ๊ณ ๋ง์นฉ๋๋ค.
( nx, ny ) ์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด, q ๋ฅผ ์ ์ ์ ์ถํด์ค๋๋ค.
( nx, ny ) ์ ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด, q ๋ฅผ ์์ ํ์ง ์์ต๋๋ค.
import sys
def solution(n):
time = 0
y, x = 0, 0
q = [(0, 0)]
dy = [0, 1, 0, -1]
dx = [1, 0, -1, 0]
d = 0
while True:
# ๋ฐฉํฅ ์ค์
for plan in dir_plan:
if time == plan[0]:
if plan[1] == 'D':
d = (d + 1) % 4
else:
d = (d - 1) % 4
# ๋ค์ ๋จธ๋ฆฌ ์์น ์ค์
ny = y + dy[d]
nx = x + dx[d]
# ๋ค์ ๋จธ๋ฆฌ๊ฐ ๋ชธ์ด๋ ๋ฒฝ์ด๋ผ๋ฉด time + 1 ์ถ๋ ฅ
if (ny,nx) in q or ny < 0 or ny >= n or nx < 0 or nx >= n:
return print(time + 1)
# ๋ค์ ๋จธ๋ฆฌ๊ฐ ์ฌ๊ณผ๋ฉด ์์ทจ์ ์ถ๊ฐ๋ง ์งํ
elif arr[ny][nx] == 'apple':
arr[ny][nx] = 0
q.append((ny,nx))
# ๋ค์ ๋จธ๋ฆฌ์ ์๋ฌด๊ฒ๋ ์์ผ๋ฉด ์์ทจ์ ๋ชธ ์ถ๊ฐ ํ๊ณ ๊ผฌ๋ฆฌ๋ ๋นผ์
else:
q.append((ny,nx))
q.pop(0)
# ์๊ฐ ์์น ์
๋ฐ์ดํธ
time += 1
y = ny
x = nx
n = int(input())
arr = [[0] * n for _ in range(n)]
k = int(input())
apples = [list(map(int,sys.stdin.readline().split())) for _ in range(k)]
for apple in apples:
arr[apple[0] - 1][apple[1] - 1] = 'apple'
l = int(input())
dir_plan = [list(sys.stdin.readline().split()) for _ in range(l)]
for v in dir_plan:
v[0] = int(v[0])
solution(n)
Last updated
Was this helpful?