๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[BAEKJOON python] 3190_๋ฑ ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๊ฒ์์๋ ๋ฑ์ด ๋์์ ๊ธฐ์ด๋ค๋๋๋ฐ, ์ฌ๊ณผ๋ฅผ ๋จน์ผ๋ฉด ๋ฑ ๊ธธ์ด๊ฐ ๋์ด๋๋ค.
๋ฑ์ด ์ด๋ฆฌ์ ๋ฆฌ ๊ธฐ์ด๋ค๋๋ค๊ฐ ๋ฒฝ ๋๋ ์๊ธฐ์์ ์ ๋ชธ๊ณผ ๋ถ๋ชํ๋ฉด ๊ฒ์์ด ๋๋๋ค.
๊ฒ์์ 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๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก ์ฃผ์ด์ง๋ค.
์ฒซ์งธ ์ค์ ๊ฒ์์ด ๋ช ์ด์ ๋๋๋์ง ์ถ๋ ฅ
# 1) BFS
from collections import deque
N = int(input())
K = int(input())
# ๋งต ์ ๋ณด (์ฌ๊ณผ๊ฐ ์๋ ๊ณณ์ 1)
apple = [[0] * (N+1) for _ in range(N+1)]
for _ in range(K):
a, b = map(int, input().split())
apple[a][b] = 1
direction = []
L = int(input())
for i in range(L) :
# ์ ์ X, ๋ฌธ์ C
x, c = input().split()
direction.append((int(x), c))
# ์ ์ฐ ํ ์ข
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
def turn(d, c) :
# ์ผ์ชฝ์ผ๋ก, ์ ์ข ํ ์ฐ
# ์ค๋ฅธ์ชฝ์ผ๋ก, ์ ์ฐ ํ ์ข
if c == "D" :
d = (d + 1) % 4
else :
d = (d - 1) % 4
return d
def bfs() :
# ์ด๊ธฐ ๋ฐฉํฅ
dd = 0
# ์ด๊ธฐ ์๊ฐ
tt = 0
# ๋ค์์ ํ์ ํ ์ ๋ณด
index = 0
# ๋ฑ ์์น
x, y = 1, 1
apple[x][y] = 2
# ๋ฐฉ๋ฌธ ์์น
q = [(x, y)]
# q.append((x, y))
while True :
ny = y + dy[dd]
nx = x + dx[dd]
# ๋ฐฉ๋ฌธ ์ํ๊ณณ 0, ์ฌ๊ณผ 1, ๋ฐฉ๋ฌธํ๊ณณ2
if 1 <= ny <= N and 1 <= nx <= N and apple[nx][ny] != 2 :
# ์ฌ๊ณผ ์์
if apple[nx][ny] == 0 :
# ๊ผฌ๋ฆฌ ์ ๊ฑฐ
apple[nx][ny] = 2
q.append((nx, ny))
# ์ด๋ ์ขํ ๋ณํ
px, py = q.pop(0)
apple[px][py] = 0
# ์ฌ๊ณผ ์์
if apple[nx][ny] == 1 :
apple[nx][ny] = 2
q.append((nx, ny))
# ๋ถ๋ชํ๋ฉด
else :
tt += 1
break
# ๋ค์ ์์น๋ก ๋จธ๋ฆฌ ์ด๋
x, y = nx, ny
tt += 1
if index < L and tt == direction[index][0] :
dd = turn(dd, direction[index][1])
index += 1
return tt
print(bfs())
# input
# 6
# 3
# 3 4
# 2 5
# 5 3
# 3
# 3 D
# 15 L
# 17 D
# output
# 9
728x90
๋ฐ์ํ
'๐ฆฅ ์ฝํ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON python] 14500_ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2022.10.10 |
---|---|
[BAEKJOON python] 14499_์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ (0) | 2022.10.10 |
[BAEKJOON python] 12100_2048(easy) (0) | 2022.10.10 |
[BAEKJOON python] 13460_๊ตฌ์ฌ ํ์ถ2 (0) | 2022.10.10 |
[BAEKJOON python] 14889_์คํํธ์ ๋งํฌ (0) | 2022.10.10 |
Comments