강의로 돌아가기
sh

js 풀이설명

set을 이용해서 양방향경로 추가, 간단하게 중복제거.

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const solution = (dirs) => {
        const set = new Set(); // 지나친 경로 배열(중복x)
        const [min, max] = [-5, 5]; // x, y좌표의 최소, 최대값
        let curX = 0; // x좌표
        let curY = 0; // y좌표
        let prev = ""; // 바뀌기전 경로

        for (let i = 0; i < dirs.length; i++) {
          prev = "" + curX + curY; // [0, 0] => '00' string으로 저장.
          if (dirs[i] === "U" && curY + 1 <= max) { // Y좌표 증가
            curY++;
          } else if (dirs[i] === "D" && curY - 1 >= min) { // Y좌표 감소
            curY--;
          } else if (dirs[i] === "R" && curX + 1 <= max) { // X좌표 증가
            curX++;
          } else if (dirs[i] === "L" && curX - 1 >= min) { // X좌표 감소
            curX--;
          } else { // 범위를 벗어나면 continue.
            continue;
          }

          // [0, 0] => [0, 1] 로 이동 했다면 '0001', '0100' 양방향 경로저장.
          set.add(curX + (curY + prev)); 
          set.add(prev + curX + curY);
        }

        return set.size / 2; // 양방향경로가 저장되어있으므로 size / 2.
      };
1 개의 답변
강풍윤

set을 이용한 양방향경로라니.... 와 미쳤습니다.... 한 수 배우고 갑니다

답변 쓰기
This input form supports markdown syntax. Please refer to 마크다운 가이드.