<๋ฌธ์ ๋งํฌ>
https://www.acmicpc.net/problem/14503โ
14503๋ฒ: ๋ก๋ด ์ฒญ์๊ธฐ
๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฒญ์ํ๋ ์์ญ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋ ์ฅ์๋ N×M ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ผ๋ก ๋ํ๋ผ ์ ์์ผ๋ฉฐ, 1×1ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ์นธ์ผ๋ก ๋๋์ด
www.acmicpc.net
โ
<ํ์ด ์ ๋ต>
- ๊ตฌํ ๋ฌธ์ ๋ผ ํน๋ณํ ์๊ณ ๋ฆฌ์ฆ์ ํ์ ์๊ณ ๋ฌธ์ ์ ์ฃผ์ด์ง ๋ด์ฉ์ ์ ์งํ๊ฒ ๊ตฌํํ๋ฉด ๋๋ค.
- ๋ฐฉํฅ ์ฒ๋ฆฌ๊ฐ ์ข ๋ณต์กํด์ ์ ๊ฒฝ ์จ์ผ๋๋ค.(๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ด ์ฃผ์ด์ง๊ณ ๊ทธ ์ํ์์ ์ผ์ชฝ์ผ๋ก ํ์ ๋ฐ ์ด๋, ๋ค๋ก ์ด๋)
- ์ฒญ์ํ ์์ญ์ ๋ฒฝ์ด๋ ๋๊ฐ์ 1๋ก ํ์ํ๋ฉด ์๋๋ค.(-1 ๊ฐ์ด 0, 1 ํน์ ๋ค๋ฅธ ์ซ์๋ก ์ฒ๋ฆฌ)
<์ ๋ต์ฝ๋>
# 220827 14503 ๋ก๋ด ์ฒญ์๊ธฐ
# ์ ๋ต์ฝ๋
import sys
input = sys.stdin.readline
# N: ๋ฐฉ์ ์ธ๋ก ํฌ๊ธฐ, M: ๋ฐฉ์ ๊ฐ๋ก ํฌ๊ธฐ
N, M = map(int, input().split())
# r, c, d: ์ฒญ์๊ธฐ์ ์์ ์์น์ ๋ฐฉํฅ
r, c, d = map(int, input().split())
# room: ๋ฐฉ์ ์ํ
room = [list(map(int, input().split())) for _ in range(N)]
# ํ์ ๋ฐฉํฅ(๋ถ์ชฝ, ๋์ชฝ, ๋จ์ชฝ, ์์ชฝ์ ๋ณด๊ณ ์์ ๋์ ์ผ์ชฝ ํ์)
dr = [0, -1, 0, 1]
dc = [-1, 0, 1, 0]
# ๋ฐฉ ์ฒญ์ ํจ์ ์ ์ธ
def clean(r, c, d, room):
# cnt: ์ฒญ์ํ ์นธ์ ๊ฐ์
# ์ถ๋ฐ ์ง์ ์ฒญ์ ๋ฐ cnt ์ธ์ฃผ๊ธฐ
room[r][c] = -1
cnt = 1
# ๋ฉ์ถ ๋๊น์ง ์ฒญ์
while True:
# ์ผ์ชฝ ํ์
nr = r + dr[d]
nc = c + dc[d]
# ์ฒญ์๋์ง ์์ ์์ญ์ผ ๊ฒฝ์ฐ
if room[nr][nc] == 0:
# ์ฒญ์๊ธฐ ์ด๋ ํ ์ฒญ์
r = nr
c = nc
room[r][c] = -1
# ํ์ ํ ๋ฐฉํฅ ๋ฐ์
if d == 0:
d = 3
else:
d -= 1
# cnt ์ธ์ฃผ๊ธฐ
cnt += 1
# ์ด๋ฏธ ์ฒญ์ํ ์์ญ์ด๊ฑฐ๋ ๋ฒฝ์ผ ๊ฒฝ์ฐ
else:
# ๋๋จธ์ง 3 ๋ฐฉํฅ ํ์
for i in range(1, 4):
if d - i < 0:
nd = d - i + 4
else:
nd = d - i
# ์ฒญ์ํ์ง ์์ ๊ณณ์ด ์์ ๊ฒฝ์ฐ ํด๋น ๋ฐฉํฅ์ผ๋ก ํ์ ์์ผ์ฃผ๊ณ ๋ค์ ์ฒญ์ ์งํ
nr = r + dr[nd]
nc = c + dc[nd]
if room[nr][nc] == 0:
d = nd
break
# ํ์ ๊ฒฐ๊ณผ ์ฒญ์ํ์ง ์์ ๊ณณ์ด ์์ ๊ฒฝ์ฐ
else:
# ๋ฐ๋ก ๋ค ํ์
nd = (d + 3) % 4
nr = r + dr[nd]
nc = c + dc[nd]
# ๋ฒฝ์ผ ๊ฒฝ์ฐ ์ฒญ์ ์ข
๋ฃ
if room[nr][nc] == 1:
break
# ๋ฒฝ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ์์น๋ก ์ด๋
else:
r = nr
c = nc
# ์ฒญ์ํ ์นธ์ ๊ฐ์ ์ถ๋ ฅ ํ ๋ฐํ
print(cnt)
return
# ์ฒญ์ ์ค์!
clean(r, c, d, room)
'โญ Problem_Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2146 ๋ค๋ฆฌ ๋ง๋ค๊ธฐ (Python/ํ์ด์ฌ) (0) | 2022.10.01 |
---|---|
[๋ฐฑ์ค] 20055 ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด (Python/ํ์ด์ฌ) (1) | 2022.09.30 |
[๋ฐฑ์ค] 2212 ์ผ์ (Python/ํ์ด์ฌ) (2) | 2022.09.29 |
[๋ฐฑ์ค] 3190 ๋ฑ (Python/ํ์ด์ฌ) (0) | 2022.09.28 |
[๋ฐฑ์ค] 2206 ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (Python/ํ์ด์ฌ) (1) | 2022.09.27 |
๋๊ธ