🔗 문제 링크
https://www.acmicpc.net/problem/16173
✏️ 풀이
const [[N], ...board] = require('fs')
.readFileSync('/dev/stdin')
.toString()
.trim()
.split('\n')
.map(v => v.split(' ').map(Number));
const dfs = (x = 0, y = 0) => {
const dist = board[x][y];
// 도착한 경우
if (dist === -1) {
return true;
}
// 0이 적힌 칸
if (!dist) {
return false;
}
// 오른쪽으로 이동
if (x + dist < N) {
const result = dfs(x + dist, y);
if (result) {
return true;
}
}
// 아래쪽으로 이동
if (y + dist < N) {
const result = dfs(x, y + dist);
if (result) {
return true;
}
}
return false;
};
console.log(dfs() ? 'HaruHaru' : 'Hing');
DFS로 모든 경우를 탐색 시도하였다. 만약 도착점으로 가는 경우를 발견하면 즉시 탐색을 멈추도록 하였다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 1743 - Node.js] 음식물 피하기 (1) | 2023.01.03 |
---|---|
[백준 25706 - Node.js] 자전거 묘기 (0) | 2023.01.02 |
[프로그래머스 Level 2] 테이블 해시 함수 - JavaScript (0) | 2022.12.29 |
[백준 1715 - Node.js] 카드 정렬하기 (0) | 2022.11.24 |
[프로그래머스 Level 2] 영어 끝말잇기 - JavaScript (0) | 2022.11.19 |