일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- React JS
- react
- design pattern
- 백준
- 프로그래머스 완전탐색
- 프로그래머스
- 자바 공부
- JavaScript
- 코딩테스트 고득점 Kit 완전탐색
- NextJS
- 디자인 패턴
- vanillaJS
- 프로그래밍 언어론
- 컴퓨터 네트워크
- 리액트
- 코틀린
- 리액트 훅
- useState
- 프로그래머스 자바
- websocket
- 자바스크립트
- 장고
- react hook
- react firebase
- 코딩테스트 고득점 Kit
- codesandbox
- 데이터모델링과마이닝
- 자바
- useEffect
- Java
Archives
- Today
- Total
기록하는 개발자
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 여행 경로 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/43164?language=javascript
전체 코드
function solution(tickets) {
// 가능한 경로가 여러 개인 경우
// 알파벳순으로 빠른 것을 return 해야하므로 정렬
tickets.sort();
let answer = [];
let usedTickets = Array.from({length: tickets.length}, ()=>0);
// nowCity : 현재 위치한 도시
// count : 사용한 티켓 수
// route : 여행 경로
function dfs(nowCity, count, route){
// ticket을 모두 확인한 경우
// 현재 경로를 push하고 dfs 탐색 종료
if(count==tickets.length){
answer.push(route);
return;
}
for(let i = 0; i<tickets.length; i++){
// 사용하지 않은 티켓이고 티켓의 출발지가 현재 도시와 동일한 경우
if(usedTickets[i]==0 && tickets[i][0]==nowCity){
// 티켓 사용 처리
usedTickets[i]=1;
// 현재 위치한 도시를 티켓의 도착지로 갱신
// 사용한 티켓 수와 여행 경로 갱신
dfs(tickets[i][1], count+1, route+" "+tickets[i][1]);
// dfs 탐색 종료 후 티켓 사용 처리 초기화
usedTickets[i]=0;
}
}
}
// 출발은 항상 "ICN"에서 시작하므로
// nowCity와 route의 초기값으로 "ICN" 입력
dfs("ICN", 0, "ICN");
// 현재 "ICN ATL ICN SFO ATL SFO"와 같이
// 문자열의 상태이므로
// split 함수를 통해 문자열 배열 return
return answer[0].split(" ");
}
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 같은 숫자는 싫어 (0) | 2023.08.09 |
---|---|
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 기능개발 (0) | 2023.08.09 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 단어 변환 (0) | 2023.08.09 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 단속카메라 (0) | 2023.08.08 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 조이스틱 (0) | 2023.08.08 |