상세 컨텐츠

본문 제목

[LeetCode][Python] 1496. Path Crossing

공부

by 근성 2023. 12. 23. 18:45

본문

[구현]

입력은 문자열인데, 문자열은 N, W, S, E로 이루어진 문자열이다.

North, West, South, East로 각각 움직이는 것이고, (0, 0)에서 시작한다.

지나갔던 좌표인 경우 True

지나간적이 없는 좌표인 경우는 False

를 return 하면 된다.

 

Example 1:

Input = "NES" => Output = False

Example 2:

Input = "NESWW" => Output = True

 

나는 이 문제를 반복문을 통해 문자를 읽고, 좌표를 계산을 했다.

좌표 계산 후, 계산 값을 지나갔던 좌표를 모아둔 list에서 탐색을 하고 아래와 같은 동작을 했다.

- 지나간적 없는 문자열일경우 list에 append

- 지나간적 있는 문자열인 경우 바로 return True

문자열이 끝난 경우 return False

 

class Solution:
    def isPathCrossing(self, path: str) -> bool:
        route = [[0, 0]]
        x = y = 0
        for direction in path:
            if direction == 'N':
                y += 1
            elif direction == 'S':
                y -= 1
            elif direction == 'E':
                x += 1
            elif direction == 'W':
                x -= 1
            if [x, y] in route:
                return True
            else:
                route.append([x, y])
        return False

관련글 더보기

댓글 영역