๋ฌธ์
'Dummy' ๋ผ๋ ๋์ค๊ฒ์์ด ์๋ค. ์ด ๊ฒ์์๋ ๋ฑ์ด ๋์์ ๊ธฐ์ด๋ค๋๋๋ฐ, ์ฌ๊ณผ๋ฅผ ๋จน์ผ๋ฉด ๋ฑ ๊ธธ์ด๊ฐ ๋์ด๋๋ค. ๋ฑ์ด ์ด๋ฆฌ์ ๋ฆฌ ๊ธฐ์ด๋ค๋๋ค๊ฐ ๋ฒฝ ๋๋ ์๊ธฐ์์ ์ ๋ชธ๊ณผ ๋ถ๋ชํ๋ฉด ๊ฒ์์ด ๋๋๋ค.
๊ฒ์์ NxN ์ ์ฌ๊ฐ ๋ณด๋์์์ ์งํ๋๊ณ , ๋ช๋ช ์นธ์๋ ์ฌ๊ณผ๊ฐ ๋์ฌ์ ธ ์๋ค. ๋ณด๋์ ์ํ์ข์ฐ ๋์ ๋ฒฝ์ด ์๋ค. ๊ฒ์์ด ์์ํ ๋ ๋ฑ์ ๋งจ์ ๋งจ์ข์ธก์ ์์นํ๊ณ ๋ฑ์ ๊ธธ์ด๋ 1 ์ด๋ค. ๋ฑ์ ์ฒ์์ ์ค๋ฅธ์ชฝ์ ํฅํ๋ค.
๋ฑ์ ๋งค ์ด๋ง๋ค ์ด๋์ ํ๋๋ฐ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- ๋จผ์ ๋ฑ์ ๋ชธ๊ธธ์ด๋ฅผ ๋๋ ค ๋จธ๋ฆฌ๋ฅผ ๋ค์์นธ์ ์์น์ํจ๋ค.
- ๋ง์ฝ ์ด๋ํ ์นธ์ ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด, ๊ทธ ์นธ์ ์๋ ์ฌ๊ณผ๊ฐ ์์ด์ง๊ณ ๊ผฌ๋ฆฌ๋ ์์ง์ด์ง ์๋๋ค.
- ๋ง์ฝ ์ด๋ํ ์นธ์ ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด, ๋ชธ๊ธธ์ด๋ฅผ ์ค์ฌ์ ๊ผฌ๋ฆฌ๊ฐ ์์นํ ์นธ์ ๋น์์ค๋ค. ์ฆ, ๋ชธ๊ธธ์ด๋ ๋ณํ์ง ์๋๋ค.
์ฌ๊ณผ์ ์์น์ ๋ฑ์ ์ด๋๊ฒฝ๋ก๊ฐ ์ฃผ์ด์ง ๋ ์ด ๊ฒ์์ด ๋ช ์ด์ ๋๋๋์ง ๊ณ์ฐํ๋ผ.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ณด๋์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๋ค. (2 ≤ N ≤ 100) ๋ค์ ์ค์ ์ฌ๊ณผ์ ๊ฐ์ K๊ฐ ์ฃผ์ด์ง๋ค. (0 ≤ K ≤ 100)
๋ค์ K๊ฐ์ ์ค์๋ ์ฌ๊ณผ์ ์์น๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ฒซ ๋ฒ์งธ ์ ์๋ ํ, ๋ ๋ฒ์งธ ์ ์๋ ์ด ์์น๋ฅผ ์๋ฏธํ๋ค. ์ฌ๊ณผ์ ์์น๋ ๋ชจ๋ ๋ค๋ฅด๋ฉฐ, ๋งจ ์ ๋งจ ์ข์ธก (1ํ 1์ด) ์๋ ์ฌ๊ณผ๊ฐ ์๋ค.
๋ค์ ์ค์๋ ๋ฑ์ ๋ฐฉํฅ ๋ณํ ํ์ L ์ด ์ฃผ์ด์ง๋ค. (1 ≤ L ≤ 100)
๋ค์ L๊ฐ์ ์ค์๋ ๋ฑ์ ๋ฐฉํฅ ๋ณํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ ์ X์ ๋ฌธ์ C๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ. ๊ฒ์ ์์ ์๊ฐ์ผ๋ก๋ถํฐ X์ด๊ฐ ๋๋ ๋ค์ ์ผ์ชฝ(C๊ฐ 'L') ๋๋ ์ค๋ฅธ์ชฝ(C๊ฐ 'D')๋ก 90๋ ๋ฐฉํฅ์ ํ์ ์ํจ๋ค๋ ๋ป์ด๋ค. X๋ 10,000 ์ดํ์ ์์ ์ ์์ด๋ฉฐ, ๋ฐฉํฅ ์ ํ ์ ๋ณด๋ X๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฒ์์ด ๋ช ์ด์ ๋๋๋์ง ์ถ๋ ฅํ๋ค.
https://www.acmicpc.net/problem/3190
๐ก ํ์ด ๋ฐ ์ฝ๋
from collections import deque
n = int(input())
k = int(input())
graph = [[0]*n for _ in range(n)]
for _ in range(k):
a, b = map(int, input().split())
graph[a-1][b-1] = 1
l = int(input())
turn = []
for _ in range(l):
t, d = map(str, input().split())
turn.append((int(t), d))
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
nd, hx, hy = 0, 0, 0
time, i = 0, 0
queue = deque()
queue.append((hx, hy))
while 1:
hx = hx + dx[nd]
hy = hy + dy[nd]
time += 1
if hx < 0 or hx >= n or hy < 0 or hy >= n or (hx, hy) in queue:
break
queue.append((hx, hy))
if graph[hx][hy] == 0:
queue.popleft()
else:
graph[hx][hy] = 0
if time == turn[i][0]:
if turn[i][1] == 'L':
nd = (nd - 1) % 4
else:
nd = (nd + 1) % 4
if i + 1 < len(turn):
i += 1
print(time)
๋ฌธ์ ์์ ์ํ๋ ๊ทธ๋๋ก ๊ตฌํํ๋ฉด ๋๋ค. ๋ฑ์ ์์น๋ queue ์๋ฃ๊ตฌ์กฐ๋ก ํํํ์ฌ ๋ฑ์ด ํ์ฌ์ ๋ฐฉํฅ์ผ๋ก ์ ์งํ ๋๋ ํด๋น ์ขํ๋ฅผ queue์ push ํ๊ณ , ์ฌ๊ณผ๊ฐ ์์ด ๊ผฌ๋ฆฌ๋ฅผ ์ฎ๊ธธ ๋๋ queue์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ popํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
'Algorithm > ๐ Baekjoon Judge' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 16234๋ฒ ์ธ๊ตฌ ์ด๋ - ํ์ด์ฌ(Python) (1) | 2022.03.31 |
---|---|
[BOJ] ๋ฐฑ์ค 14500๋ฒ ํ ํธ๋ก๋ฏธ๋ ธ - ํ์ด์ฌ(Python) (0) | 2022.03.31 |
[BOJ] ๋ฐฑ์ค 1238๋ฒ ํํฐ - ํ์ด์ฌ(Python) (0) | 2022.01.19 |
[BOJ] ๋ฐฑ์ค 1261๋ฒ ์๊ณ ์คํ - ํ์ด์ฌ(Python) (0) | 2022.01.19 |
[BOJ] ๋ฐฑ์ค 11000๋ฒ ๊ฐ์์ค ๋ฐฐ์ - ํ์ด์ฌ(Python) (0) | 2022.01.10 |