https://www.acmicpc.net/problem/14503
# n x m
n, m = map(int, input().split())
#์ขํ๊ฐ, ๋ฐฉํฅ
x, y, d = map(int, input().split())
#์ฒญ์ํ๋์ง ์ํ๋์ง ์ฒดํฌ
cheak = [[0]*m for _ in range(n)]
#MAP
arr = []
for i in range(n):
arr.append(list(map(int, input().split())))
#๋ฐฉํฅ ๋ถ๋๋จ์
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
cheak[x][y] = 1
count = 1
turn = 0
#์ผ์ชฝ
def left():
global d
d -= 1
if d == -1:
d = 3
while True:
left()
nx = x + dx[d]
ny = y + dy[d]
#์ฒญ์ํ์ง ์์ ๊ณต๊ฐ์ด ์กด์ฌํ๋ค๋ฉด
if cheak[nx][ny] == 0 and arr[nx][ny] == 0:
cheak[nx][ny] = 1
x = nx
y = ny
count += 1
turn = 0
continue
else:
turn += 1
#๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์ or ๋ฒฝ
if turn == 4:
nx = x - dx[d]
ny = y - dy[d]
if arr[nx][ny] == 0:
x = nx
y = ny
else:
break
turn = 0
print(count)
ํ๋ฆฐ๊ฒ ์๋๋ฐ ์๊พธ ๋ต์ด ์ด์ํ๊ฒ ๋์์ ์ค๋ ๊ณ ๋ฏผํ๋๋ฐ
else๋ฌธ์ด ์ด์ํ๊ณณ์ ์์๋ค..
์จ๋ ์ด๋๋ก ์ฝ๋๋ง ์ง๋ฉด ๋๋๋ฐ ์์ง์ ์๊ฐ์ด ์ข ๊ฑธ๋ฆผ
๋ฌธ์ ๋ง์ด ํ์ด๋ด์ผํ ๋ฏ
- ํ์ฌ ์์น๋ฅผ ์ฒญ์ํ๋ค.
- ํ์ฌ ์์น์์ ํ์ฌ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ฐฉํฅ๋ถํฐ ์ฐจ๋ก๋๋ก ์ธ์ ํ ์นธ์ ํ์ํ๋ค.
- ์ผ์ชฝ ๋ฐฉํฅ์ ์์ง ์ฒญ์ํ์ง ์์ ๊ณต๊ฐ์ด ์กด์ฌํ๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๋ค์ ํ ์นธ์ ์ ์งํ๊ณ 1๋ฒ๋ถํฐ ์งํํ๋ค.
- ์ผ์ชฝ ๋ฐฉํฅ์ ์ฒญ์ํ ๊ณต๊ฐ์ด ์๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ์ด๋ฏธ ๋์ด์๊ฑฐ๋ ๋ฒฝ์ธ ๊ฒฝ์ฐ์๋, ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์ง์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ์ด๋ฏธ ๋์ด์๊ฑฐ๋ ๋ฒฝ์ด๋ฉด์, ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฒฝ์ด๋ผ ํ์ง๋ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๋ฉ์ถ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1459 - ๊ฑท๊ธฐ (0) | 2021.11.03 |
---|---|
[Python] ๋ฐฑ์ค 1991 - ํธ๋ฆฌ์ํ (0) | 2021.10.07 |
[Python] ๋ฐฑ์ค 10829 - ์ด์ง์ ๋ณํ (0) | 2021.10.06 |
[Python] ๋ฐฑ์ค 4796 - ์บ ํ (0) | 2021.02.13 |
[Python] ๋ฐฑ์ค 1946 - ์ ์ ์ฌ์ (0) | 2021.02.11 |