문제
https://school.programmers.co.kr/learn/courses/30/lessons/43164
코드
function solution(tickets) {
var answer = [];
const len = tickets.length;
const visited = new Array(len).fill(false);
// 티켓 정렬 -> 여러 경로가 있을 때 첫번째 나온 결과를 정답으로 선택
tickets.sort();
function dfs(str, path, depth) {
// answer의 길이가 0 == 처음 완성된 경로
if (depth === len && answer.length === 0) {
// 지금까지의 경로를 answer에 저장
answer = path
return;
}
for (let i = 0; i < len; i++) {
// 방문한 적이 있다면 continue
if (visited[i]) continue;
// 방문한 적이 없고 현재 지역와 출발 지역이 같은 티켓을 선택
if (!visited[i] && str === tickets[i][0]) {
// 방문처리 해주기
visited[i] = true;
dfs(tickets[i][1], [...path, tickets[i][1]], depth+1);
// 여러 경로가 존재할 수 있기 때문에 다시 false로 복원 시켜줌
visited[i] = false;
}
}
}
// 인천 공항에서 출발
dfs("ICN",["ICN"] ,0);
return answer;
}
💡What I Learned
array.sort()
JS 에서 문자열로 이루어진 이차원 배열을 정렬할 때,
1. 첫번째 원소를 기준으로 오름차순 정렬
2. 첫번째 원소의 문자열이 같다면 두번째 원소를 기준으로 오름차순 정렬
위의 두가지 조건을 알아서 적용해준다.
tickets.sort()
tickets 배열을 정렬하기 위해서 별도의 조건 없이 위의 코드만 작성해주면 된다...!
'Algorithm > Programmers' 카테고리의 다른 글
[Lv.2] 피로도 - JavaScript (0) | 2023.03.18 |
---|---|
[Lv.2] 이진변환 반복하기 -JavaScript (0) | 2023.03.12 |
[Lv.3] 징검다리 건너기 - JavaScript (0) | 2023.03.07 |
[Lv.3] 기지국 설치 - JavaScript (0) | 2023.03.06 |
[Lv.2] 최솟값 만들기 - JavaScript (0) | 2023.03.05 |
댓글