Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 큐
- 스택
- 자료구조
- 컨테이너
- pytorch
- 타입스크립트
- 프론트엔드
- 알고리즘
- RxJS
- 코딩테스트
- alexnet
- 프로그래머스
- 해시테이블
- 자바스크립트
- C
- 브라우저
- cors
- 포인터
- 웹팩
- APOLLO
- 배열
- 프로세스
- vue3
- RT scheduling
- 연결리스트
- GraphQL
- 이진탐색
- Machine Learning
- 릿코드
- 연결 리스트
Archives
- Today
- Total
프린세스 다이어리
[프로그래머스] 여행경로 문제 자바스크립트 풀이 본문
728x90
1. 접근 방법
- [["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]] 이런 그래프고 각 노드의 [0]이 출발, [1]이 도착임
- 문제에서 항상 ICN 공항에서 출발한다고 했으므로 출발지는 'ICN'
- 주어진 tickets(array), 시작노드 'ICN'(string), 탐색중인 경로 path(array), 결과 담을 routes(array)
(1) 만약 tickets가 비어 있으면 모든 노드를 다 돌았다는 의미이므로 [...path, next]를 routes에 넣음.
(2) 그렇지 않으면 재귀로 next의 다음 노드를 path에 넣어줌.
2. 풀이
const findPath = (tickets, routes, next, path) => {
if (tickets.length === 0) {
routes.push([...path, next]);
return;
}
const nextNodes = tickets.filter(ticket => ticket[0] === next);
nextNodes.forEach((nextNode, idx) => {
const newTickets = tickets.filter(ticket => ticket !== nextNode);
findPath(newTickets, routes, nextNode[1], [...path, next]);
})
}
function solution(tickets) {
let routes = [];
findPath(tickets, routes, 'ICN', []);
return routes.sort()[0];
}
728x90
'자료구조, 알고리즘' 카테고리의 다른 글
자바스크립트 해시 테이블 충돌 해결하는 방법 2가지 (0) | 2021.11.14 |
---|---|
자바스크립트로 해시테이블 구현하는 방법 (0) | 2021.11.13 |
자바스크립트 가장 자주 등장하는 숫자 문제 (0) | 2021.11.08 |
[백준] 단지번호 붙이기 문제 자바스크립트 풀이 - BFS (0) | 2021.11.05 |
[백준] 미로 탐색 문제 자바스크립트 풀이 - BFS (0) | 2021.11.04 |
Comments