๐๋ฌธ์ ํ์ํ๊ธฐ
- ๋ก๋ด์ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๋ฐฉํฅ์ ์ผ์ง์ ์ผ๋ก ์์ง์ด๋ฉฐ, ์ด๋ ์ค ๋ฒฝ, ๋ฐฉ๋ฌธํ ์ง์ญ, ์ฅ์ ๋ฌผ์ ๋ง๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๋ค์ ๋ฐฉํฅ์ผ๋ก ์์ง์ธ๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ํ ๋ค์ ๋ฐฉํฅ์ด ์๋ค๋ฉด ๋งจ ์ฒ์ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ์ ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- ๋ก๋ด์ด ์์ง์ผ ์ ์๋ ๊ฒฝ์ฐ ๋์์ ๋ฉ์ถ๋ค.
- ๋ฐฉ์ ํฌ๊ธฐ๋ R * C(3 ≤ R,C ≤ 1,000), ์ฅ์ ๋ฌผ์ ๊ฐ์๋ k(0 ≤ k ≤ 1,000)
- ๋ก๋ด์ด ๋ฉ์ถ๋ ์์น๋ฅผ ์ถ๋ ฅํ๊ธฐ
๋ฌธ์ ์ ์ง์์ฌํญ์ ๋ฐ๋ผ ๋ก๋ด์ ์ด๋์ํค๋ฉด์, ๋ก๋ด์ด ๋ ์ด์ ์ด๋ํ ์ ์์ ๋์ ์์น๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๐์ฝ๋ ์ค๊ณํ๊ธฐ
- ๋ฐฉ์ ํฌ๊ธฐ R, C๋ฅผ ์ ๋ ฅ๋ฐ์ RxC ํฌ๊ธฐ์ ์ด์ฐจ์ ๋ฆฌ์คํธ room์ ๋ง๋ค๊ณ , ๋ชจ๋ ์์๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
- ์ฅ์ ๋ฌผ์ ํฌ๊ธฐ k๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ๊ฐ ์ฅ์ ๋ฌผ์ ์์น๋ฅผ ์ ๋ ฅ๋ฐ์ room์ ํด๋น ์์น์ 1์ ์ ์ฅํ๋ค.
- ๋ก๋ด์ ์์ ์์น๋ฅผ sr, sc๋ก ์ ๋ ฅ๋ฐ๋๋ค.
- ๋ก๋ด์ ์ด๋๋ฐฉํฅ ์์๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ direction_order์ ์ด๋ ๋ฐฉํฅ ์์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
- ๋ก๋ด์ ์์ ์์น์์๋ถํฐ ์ด๋๋ฐฉํฅ ์์์ ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ๋ก๋ด์ ์ด๋์ํค๋ฉด์, ๋ฐฉ๋ฌธํ ์์น์๋ ๋ฐฉ๋ฌธ ์ด๋ ฅ์ ๊ธฐ๋กํ๊ธฐ ์ํด 3์ ์ ์ฅํ๋ค.
- ๋ ์ด์ ๋ก๋ด์ด ์์ง์ผ ์ ์์ ๋, ๋ง์ง๋ง ์์น๋ฅผ ์ถ๋ ฅํ๋ค.
๐์ ๋ต ์ฝ๋
R, C = map(int, input().split())
room = [[0]*C for _ in range(R)]
k = int(input())
for _ in range(k):
br, bc = map(int, input().split())
room[br][bc] = 1
r, c = map(int, input().split())
directions = [(-1,0),(1,0),(0,-1),(0,1)]
direction_order = [directions[order-1] for order in map(int, input().split())]
room[r][c] = 3
cur_direction = 0
while True:
for i in range(4):
dr, dc = direction_order[cur_direction]
nr, nc = r+dr, c+dc
if 0 <= nr < R and 0 <= nc < C and not room[nr][nc]:
r, c = nr, nc
room[r][c] = 3
break
cur_direction = (cur_direction + 1) % 4
else:
print(r, c)
break
else:
print(r, c)
728x90