[๋ฐฑ์ค-14503] ๋ก๋ด ์ฒญ์๊ธฐ / Python
๐ Problem Solving/Baekjoon
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
r, c, d = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]
visited = [[0] * m for _ in range(n)]
visited[r][c] = 1
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
def turnLeft():
global d
d -= 1
if d == -1:
d = 3
turnTime = 0
answer = 1
while True:
turnLeft()
nx = r + dx[d]
ny = c + dy[d]
if visited[nx][ny] == 0 and graph[nx][ny] == 0:
visited[nx][ny] = 1
r, c = nx, ny
answer += 1
turnTime = 0
continue
else:
turnTime += 1
if turnTime == 4:
nx = r - dx[d]
ny = c - dy[d]
if graph[nx][ny] == 0:
r, c = nx, ny
else:
break
turnTime = 0
print(answer)
ํด์ค
์๋ฎฌ๋ ์ด์ ๋ฌธ์ . ๋ก๋ด ์ฒญ์๊ธฐ๋ 0์ธ ๊ณณ์ ๋์๋ค๋๋ฉฐ ์ฒญ์๋ฅผ ํ๋ค. ์ฌ๊ธฐ์ ์ฒญ์๋ฅผ ํ ๊ณณ์ ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ๋ค.
turnLeft๋ ์ผ์ชฝ์ผ๋ก ํ์ ์ ํ ๋ฐฉํฅ์ ์ ํ๋ ํจ์๋ค. ๋ฐฉ๋ฌธํ์ง ์์๊ณ , ๋ฒฝ์ด ์๋ ๊ณณ์ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ answer๋ฅผ ํ๋์ฉ ๋๋ ค์ค๋ค. ํ์ ํด์ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ด ๋ฐฉ๋ฌธ์ ํ๊ฑฐ๋ ๋ฒฝ์ด๋ผ๋ฉด ํ์ ์ ๊ณ์ํ๋ค. ์ฌ๊ธฐ์, ํ์ ์ 4๋ฒ ๋ชจ๋ ํ ๊ฒฝ์ฐ์๋ ๋ง์ง๋ง์ผ๋ก ๋ฐ๋ผ๋ณด๊ณ ์๋ ๋ฐฉํฅ์ ๋ท ์ชฝ์ผ๋ก ์ด๋์ ํด์ค๋ค. ์ด ๋, ๋ฒฝ์ด ์๋ ๊ณณ์ผ๋ก ํ์ง์ ํด์ผํ๊ณ , ํ์งํ ๊ณณ์ด ๋ฒฝ์ผ๋ก ๋งํ์๋ค๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋ฉ์ถ๋ค.
'๐ Problem Solving > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค-2504] ๊ดํธ์ ๊ฐ / Python (0) | 2021.06.19 |
---|---|
[๋ฐฑ์ค-2563] ์์ข ์ด / Python (0) | 2021.06.19 |
[๋ฐฑ์ค-2960] ์๋ผํ ์คํ ๋ค์ค์ ์ฒด / Python (0) | 2021.06.18 |
[๋ฐฑ์ค-11052] ์นด๋ ๊ตฌ๋งคํ๊ธฐ / Python (0) | 2021.06.18 |
[๋ฐฑ์ค-18353] ๋ณ์ฌ ๋ฐฐ์นํ๊ธฐ / Python (0) | 2021.06.04 |