#include <string> #include <vector> #include <map> #include <algorithm> #include <iostream> using namespace std; vector<string> answer; vector<pair<string, string>> new_tickets; map<int, int> visited; bool flag = false; int check() { for(int i = 0; i < new_tickets.size(); i++) { if(visited[i] == 0) { return 0; } } return 1; } void DFS(string start) { if(check() == 1) { flag = true; return; } for(int i = 0; i < new_tickets.size(); i++) { if(new_tickets[i].first == start && visited[i] == 0) { visited[i] = 1; answer.push_back(new_tickets[i].second); DFS(new_tickets[i].second); if(flag == true) { return; } answer.pop_back(); visited[i] = 0; } } } vector<string> solution(vector<vector<string>> tickets) { for(int i = 0; i < tickets.size(); i++) { new_tickets.push_back({tickets[i][0], tickets[i][1]}); } // 사전정렬을 위한 오름차순정렬 sort(new_tickets.begin(), new_tickets.end()); for(int i = 0; i < new_tickets.size(); i++) { if(new_tickets[i].first == "ICN") { answer.push_back(new_tickets[i].first); DFS(new_tickets[i].first); if(flag == true) { return answer; } answer.pop_back(); } } } | cs |
'Programmers > Level 3' 카테고리의 다른 글
[프로그래머스 3] 단속카메라 (C/C++) (★) (0) | 2020.01.10 |
---|---|
[프로그래머스 3] 디스크 컨트롤러 (C/C++) (★★★) (0) | 2020.01.10 |
[프로그래머스 3] 단어 변환 (C/C++) (0) | 2020.01.09 |
[프로그래머스 3] 네트워크 (C/C++) (0) | 2020.01.09 |
[프로그래머스 3] 이중 우선순위 큐 (C/C++) (0) | 2020.01.08 |