백준 16173 < 점프왕 쩰리 (Small) > JavaScript

2023. 1. 7.·☕️ 커리어 & 인터뷰 준비/코딩 테스트

📍문제 링크

https://www.acmicpc.net/problem/16173

 

16173번: 점프왕 쩰리 (Small)

쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로,  (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다.

www.acmicpc.net

 

📍알고리즘 분류

- 구현

- 그래프 이론

- 브루트포스

- 그래프 탐색

- 너비 우선 탐색

- 깊이 우선 탐색

 

📍문제 풀이

구현으로도 해결할 수 있는 문제이지만 DFS를 사용해서 풀자

- 크기가 작아서 구현으로 해결 가능

 

DFS를 사용하는 이유

- 빠르게 목표 지점에 도달하는 경로 하나만 찾으면 프로그램을 종료할 수 있어서

 

📍의사 코드

/*
1. 행렬 형태로 주어진 데이터를 2차원 배열로 가공
2. 2차원 배열의 (0,0) 에서 DFS 시작
  2.1. 방문 기록을 저장할 동일한 사이즈의 2차원 배열 생성
  2.2. 스택에 시작 지점의 인덱스를 미리 넣어 생성
  2.3. 스택에 있는 지점에서 하, 우 방향 진출 가능한지 탐색하고 유효하면 stack에 push
  2.4. 지점의 값이 음수이면 종료
  2.5. 반복문이 끝나면 종료
*/

 

📍코드 (JavaScript)

const [in1, ...in2] = require("fs")
  .readFileSync("/dev/stdin")
  .toString()
  .trim()
  .split("\n");

const N = +in1;
const map = in2.map((row) => row.split(" ").map(Number));

const dfs = () => {
  const isVisited = Array.from({ length: N }, (column) =>
    Array.from({ length: N }, (row) => false),
  );
  const stack = [[0, 0]];
  while (stack.length) {
    const [y, x] = stack.pop();
    const val = map[y][x];
    if (val < 0) return "HaruHaru";

    if (y + val < N && !isVisited[y + val][x]) {
      stack.push([y + val, x]);
      isVisited[y + val][x] = true;
    }
    if (x + val < N && !isVisited[y][x + val]) {
      stack.push([y, x + val]);
      isVisited[y][x + val] = true;
    }
  }
  return "Hing";
};

console.log(dfs());

 

'☕️ 커리어 & 인터뷰 준비/코딩 테스트' 카테고리의 다른 글
  • 백준 1240 < 노드사이의 거리 > JavaScript
  • 백준 13565 < 침투 > JavaScript
  • 백준 1475 < 방 번호 > Python
  • 백준 2302 < 극장 좌석 > JavaScript
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
백준 16173 < 점프왕 쩰리 (Small) > JavaScript
상단으로

티스토리툴바