주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다.
항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> answer, temp;
bool visited[10001] = {0, };
void dfs(vector<vector<string>> tickets, string start, int cnt) {
temp.push_back(start);
// 모든 도시를 방문했으면 종료
// 첫 answer가 알파벳 순서가 앞서는 경로
if(cnt == tickets.size() && answer.empty()) {
answer = temp;
return;
}
for(int i=0;i<tickets.size();i++) {
// 방문여부 체크
if(start == tickets[i][0] && !visited[i]) {
visited[i] = true;
dfs(tickets, tickets[i][1], cnt+1);
visited[i] = false;
}
}
temp.pop_back();
}
vector<string> solution(vector<vector<string>> tickets) {
sort(tickets.begin(), tickets.end());
dfs(tickets, "ICN", 0);
return answer;
}
첫 answer가 정답이 된다는 조건을 빠뜨려서 헤맸다 ㅠㅠ
push 한 후에 다시 pop 해주는 것도 잊지 말자..^_^
DFS/BFS 더 풀어봐야겠다!!!