Algorithm Problem/Python
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋น์ ๊ฒฝ๋ก ์ฌ์ดํด(์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ3)
deo2kim
2022. 2. 6. 21:38
๋ฐ์ํ

๐ค๋ฌธ์ ํด๊ฒฐ
๐จ ๋ฌธ์ ์์ ์ํค๋๋๋ก ๊ทธ๋๋ก ํ์๋ค. (๊ตฌํ)
๐ซ visited ๋ผ๋ 3์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ ๋ค. ์ ์ผ ์์ชฝ์ ์์์๋ 'U','D','R','L' ์ด ๋ค์ด๊ฐ ์ ์๋๋ฐ ํด๋น ์์น(i, j) ์์ ์ด๋ํ ๋ฐฉํฅ์ ๋ด๊ณ ์๋ค. ์ธ์ดํด์ด ๋ค๋ฅด๋ฉด ์ ๋๋ก ์ด๋๊ฒฝ๋ก๊ฐ ํ๋๋ผ๋ ๋๊ฐ์๊ฒ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์. ์ด๋ํ ๋ UDRL ์ด ์๋์ง ํ์ธ์ ํ๊ณ ์ด๋ํ๋ค.
๐ป์์ค ์ฝ๋
def solution(grid):
answer = []
N, M = len(grid), len(grid[0])
visited = [[set() for _ in range(M)] for _ in range(N)]
# U, D, L, R
for i in range(N):
for j in range(M):
for k in 'UDLR':
cnt = 0
while True:
if k in visited[i][j]: # ์ด๋ฏธ ์ด๋ํ๋ ์ ์ด ์๋์ง ํ์ธ
break
visited[i][j].add(k) # ์๋ค๋ฉด ์ธ์ดํด ์์
cnt += 1
# ์ด๋
if k == 'U':
i -= 1
if i < 0:
i = N - 1
elif k == 'D':
i += 1
if i == N:
i = 0
elif k == 'L':
j -= 1
if j < 0:
j = M - 1
elif k == 'R':
j += 1
if j == M:
j = 0
# ๋ค์ ๋ฐฉํฅ ์ฒดํฌ
if grid[i][j] == 'L':
if k == 'U':
k = 'L'
elif k == 'D':
k = 'R'
elif k == 'L':
k = 'D'
elif k == 'R':
k = 'U'
elif grid[i][j] == 'R':
if k == 'U':
k = 'R'
elif k == 'D':
k = 'L'
elif k == 'L':
k = 'U'
elif k == 'R':
k = 'D'
if cnt > 0:
answer.append(cnt)
return sorted(answer)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋งํฌ: ๋น์ ๊ฒฝ๋ก ์ธ์ดํด
๋ฐ์ํ