๋ฌธ์
https://www.acmicpc.net/problem/14503
ํ์ด
# ๋ฐฑ์ค 14503๋ฒ ๋ฌธ์ - ๋ก๋ด ์ฒญ์๊ธฐ
import sys
from collections import deque
input = sys.stdin.readline
n,m = map(int,input().split())
visited = [[0] * m for _ in range(n)]
r,c,d = map(int,input().split())
graph = [list(map(int, input().split())) for _ in range(n)]
# d => 0,3,2,1 ์์๋ก ๋์์ผํ๋ค.
dx = [-1,0,1,0]
dy = [0,1,0,-1]
# ์ฒ์ ์์ํ๋ ๊ณณ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
visited[r][c] = 1
cnt = 1
while 1:
flag = 0
# 4๋ฐฉํฅ ํ์ธ
for _ in range(4):
# 0,3,2,1 ์์ ๋ง๋ค์ด์ฃผ๊ธฐ์ํ ์
nx = r + dx[(d+3)%4]
ny = c + dy[(d+3)%4]
# ํ๋ฒ ๋์์ผ๋ฉด ๊ทธ ๋ฐฉํฅ์ผ๋ก ์์
์์
d = (d+3)%4
if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 0:
if visited[nx][ny] == 0:
visited[nx][ny] = 1
cnt += 1
r = nx
c = ny
#์ฒญ์ ํ ๋ฐฉํฅ์ด๋ผ๋ ํ์ผ๋ฉด ๋ค์์ผ๋ก ๋์ด๊ฐ
flag = 1
break
if flag == 0: # 4๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ๋์ด ์์ ๋,
if graph[r-dx[d]][c-dy[d]] == 1: #ํ์งํ๋๋ฐ ๋ฒฝ
print(cnt)
break
else:
r,c = r-dx[d],c-dy[d]
์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ ๋ณด๋ค๋ ๋ฌธ์ ์ ๋์จ ๋ด์ฉ ๊ทธ๋๋ก ๊ทธ๋ฅ ๊ตฌํ์ ํ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.
๊ทผ๋ฐ ์ฒ์ ํ์ด๋ณด๋ ๋ฌธ์ ์ด๊ธฐ๋ ํ๊ณ ํ์ ํ๋ ๋ฐฉ๋ฒ์ด ํท๊ฐ๋ฆฌ๊ณ ๋ฌธ์ ์ ๋ํ ์ดํด๋ฅผ ํ๋๋ผ ์๊ฐ์ด ์กฐ๊ธ ์์๋๋ค.
๋ค์ ํ๋ฒ ํ์ด๋ณด๋๋ก ํด์ผ๊ฒ ๋ค.
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] [Gold5] 2293๋ฒ_๋์ 2 (0) | 2023.02.12 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [Gold5] 2293๋ฒ_๋์ 1 (0) | 2023.02.11 |
๐ฉ [๋ฐฑ์ค] [Python] [Silver4] 1269๋ฒ_๋์นญ ์ฐจ์งํฉ (0) | 2023.02.09 |
๐ฉ [๋ฐฑ์ค] [Python] [Silver1] 1303๋ฒ_์ ์-์ ํฌ (0) | 2023.02.09 |
๐ฉ [๋ฐฑ์ค] [Python] [Silver1] 2504๋ฒ_๊ดํธ์ ๊ฐ (0) | 2023.02.08 |