728x90
해결방법
dfs, bfs문제이고 솔직히 쉬운 문제였는데 오래걸렸다. 첫 번째는 문제에 대한 오해였다. 이 티켓을 사용해서 모든 도시를 다 방문해야만한다. 단순히 dfs를 통해서 사용하는 것이 아니라 실제 다 모든 도시 방문 && 모든 티켓 사용인지를 확인해줘야만 한다.
전체 소스
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
int T;
vector<bool> v;
vector<string> dfs(string s, vector<vector<string>> t, vector<string> ans, int cnt) {
ans.push_back(s);
if (cnt == T) return ans;
vector<string> tmp;
for (int i = 0; i < t.size(); ++i) {
if (t[i][0] == s && !v[i]) {
v[i] = true;
tmp = dfs(t[i][1], t, ans, cnt+1);
if (tmp.size() == T+1) return tmp;
v[i] = false;
}
}
return tmp;
}
vector<string> solution(vector<vector<string>> t) {
vector<string> ans;
T = t.size();
v.resize(t.size(), false);
sort(t.begin(), t.end());
ans = dfs("ICN", t, ans, 0);
return ans;
}
728x90
'Algorithm > Programmers' 카테고리의 다른 글
체육복 - level 2 (0) | 2019.05.06 |
---|---|
단속카메라 - level 3 (0) | 2019.05.06 |
줄 서는 방법 - level 3 (0) | 2019.05.04 |
튜브의 소개팅 - level 4 (0) | 2019.04.14 |
서울에서 경산까지 - level 4 (0) | 2019.04.14 |
댓글