[프로그래머스] 방문 길이 (JS)

hhkim·2023년 9월 20일
0

Algorithm - JavaScript

목록 보기
139/188
post-thumbnail

풀이 과정

  1. 현재 좌표 문자열('00', '02' 등)을 키로, 연결된 좌표 문자열 set을 값으로 갖는 객체 생성
  2. dirs의 각 문자에 대해 반복
  3. 다음 이동하는 좌표 계산
  4. 길을 지난 적이 있는지 객체를 가지고 확인
    없으면 객체에 새로운 값 추가, 결과 +1

코드

function solution(dirs) {
  const dir = {
    U: [1, 0],
    D: [-1, 0],
    R: [0, 1],
    L: [0, -1],
  };
  const obj = {};

  let result = 0;
  let [y, x] = [0, 0];
  for (const d of dirs) {
    const ny = y + dir[d][0];
    const nx = x + dir[d][1];
    if (ny < -5 || ny > 5 || nx < -5 || nx > 5) continue;
    const [curr, next] = [[y, x].join(''), [ny, nx].join('')];
    if (!obj[curr]) obj[curr] = new Set();
    if (!obj[next]) obj[next] = new Set();
    if (!obj[curr].has(next)) {
      ++result;
      obj[curr].add(next);
      obj[next].add(curr);
    }
    [y, x] = [ny, nx];
  }
  return result;
}

0개의 댓글