본문 바로가기

Coding Test/Programmers

[프로그래머스/파이썬] 빛의 경로 사이클

728x90

나의 풀이

def solution(grid):
    answer = []
    visited = set()
    row, col = len(grid), len(grid[0])
    dx, dy = [1, 0, -1, 0], [0, 1, 0, -1]

    for i in range(row):
        for j in range(col):
            for k in range(4):
                count = 0
                x, y, c = i, j, k
                while (x, y, c) not in visited:
                    visited.add((x, y, c))
                    x, y = (x + dx[c]) % row, (y + dy[c]) % col

                    if grid[x][y] == 'R':
                        c = (c + 3) % 4
                    elif grid[x][y] == 'L':
                        c = (c + 1) % 4

                    count += 1
                if count:
                    answer.append(count)

    return sorted(answer)

 

반응형