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)

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๋งํฌ: ๋น›์˜ ๊ฒฝ๋กœ ์‹ธ์ดํด

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€์ˆ˜0