개발/알고리즘
프로그래머스 여행경로 C++
daisy-day
2021. 2. 7. 20:54
문제
programmers.co.kr/learn/courses/30/lessons/43164
코딩테스트 연습 - 여행경로
[[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO]
programmers.co.kr
코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool visited[10001];
vector<string> answer;
int max_count;
void dfs(vector<vector<string>> tickets, vector<string> tmp, string start, int count)
{
tmp.push_back(start);
if(max_count < count)
{
max_count = count;
answer = tmp;
}
for(int i = 0; i < tickets.size(); i++)
{
if(tickets[i][0] == start && visited[i] == false)
{
visited[i] = true;
dfs(tickets, tmp, tickets[i][1], count + 1);
visited[i] = false;
}
}
tmp.pop_back();
}
vector<string> solution(vector<vector<string>> tickets) {
sort(tickets.begin(), tickets.end());
vector<string> tmp;
dfs(tickets, tmp, "ICN", 0);
return answer;
}