코린이의 소소한 공부노트

[LeetCode/Easy] 1496. Path Crossing 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1496. Path Crossing

무지맘 2023. 6. 13. 11:59

1. Input

1) String path

- 움직일 순서가 동서남북(E,W,S,N)으로 적혀있다.

 

2. Output

1) (0,0)에서 시작해 path를 따라 움직일 때 지나왔던 경로를 겹쳐 지나게 되면 true, 아니면 false를 반환

- path를 따라 움직일 때 해당 방향으로 1씩 움직인다.

 

3. Constraint

1) 1 <= path.length <= 10^4

2) path'N', 'S', 'E', 'W'로 이루어져 있다.

 

4. Example

Input: path = "NES" -> Output: false

Input: path = "NESWW" -> Output: true

설명:

- 겹치는 경로가 없다.

- (0,0)에서 겹치게 된다.

 

5. Code

1) 첫 코드(2023/06/13)

class Solution {
    public boolean isPathCrossing(String path) {
        HashSet<String> s = new HashSet<>();
        s.add("0,0");
        boolean cross = false;
        int x = 0, y = 0, i = 0;
        while(!cross && i<path.length()){
            char c = path.charAt(i++);
            if(c=='N') y++;
            else if(c=='E') x++;
            else if(c=='S') y--;
            else x--;
            String next = x + "," + y;
            if(!s.contains(next)) s.add(next);
            else cross = true;
        }
        return cross;
    }
}

- 67%, 60%