๋ฌธ์ ๋งํฌ
https://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
๋นํ๊ธฐ ํ๊ฐ ์ฃผ์ด์ก์ ๋ ๋ชจ๋ ํ๋ฅผ ์ฌ์ฉํด์ ์ฌํํ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ๋ฆฌํดํ๋ ๋ฌธ์ .
ํ์ด
๊ฐ๊ฐ์ ๊ณตํญ์ ๋ ธ๋๋ผ๊ณ ์๊ฐํ์ ๋ ๊ณตํญ i์์ j๋ก ๊ฐ๋ ํ๊ฐ ์์ผ๋ฉด i์ j ์ฌ์ด์ ๊ฐ์ ์ด ์กด์ฌํ๋ค๊ณ ์๊ฐํ ์ ์๋ค.
ICN ๊ณตํญ์ ์์ ๋ ธ๋๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค๋ก ์ด๋ํด์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๋๊น์ง ์ด๋ํ๋ค.
๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ ๋ ๊ทธ๋๊น์ง์ ๋ฐฉ๋ฌธ ๊ฒฝ๋ก๋ฅผ answer ๋ฒกํฐ์ ๋ด์์ ๋ฆฌํดํ๋ค.
ํ์ง๋ง ๋ฌธ์ ์กฐ๊ฑด์ ๋ณด๋ฉด
๋ง์ผ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ํ๋ฒณ ์์๊ฐ ์์๋ ๊ฒฝ๋ก๋ฅผ return ํฉ๋๋ค.
๋ผ๋ ์กฐ๊ฑด์ด ์๋ค.
๊ฒฝ๋ก๊ฐ ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ์ฌ์ ์์ผ๋ก ์์๋ ๊ฒฝ๋ก๋ฅผ ๋ฆฌํดํด์ผํ๋ค.
๊ทธ๋์ ๋๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๋ชจ์์, ์ ๋ ฌํ ํ ์ ์ผ ์์์๋ ๊ฒฝ๋ก๋ฅผ ๋ฆฌํดํ๋ ๋ฐฉ์์ ์ ํํ๋ค.
๋ชจ๋ ๊ฒฝ์ฐ์์๋ฅผ ํ์ํ๋ฉด์
1. ๊ฒฝ๋ก๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ํฉ์น๋ค. ๋ง์ฝ ICN -> JFK -> HND ๋ฉด "ICNJFKHND" ์ด๋ ๊ฒ
2. ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ vector<string> all_route ๋ฒกํฐ์ ์ ์ฅํ๋ค.
3. ๋ฒกํฐ๋ฅผ ์ ๋ ฌํ๋ค.
4. 0๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ ๋ฌธ์์ด์ 3๊ธ์์ฉ ์ชผ๊ฐ์ answer ๋ฒกํฐ์ ๋ฃ๋๋ค.
์ฝ๋ ์์ฑ
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int MAX_N = 10000 + 5;
bool visited[MAX_N];
vector<string> all_route;
void dfs(int depth, string now, vector<vector<string>> tickets, string result){
if(depth == tickets.size()){
all_route.push_back(result);
return;
}
for(int i = 0; i<tickets.size(); i++){
if(!visited[i] && tickets[i][0] == now){
visited[i] = true;
dfs(depth + 1, tickets[i][1], tickets, result + tickets[i][1]);
visited[i] = false;
}
}
}
void get_answer(string ans, vector<string> & answer){
for(int i = 0; i<ans.length(); i+=3)
answer.push_back(ans.substr(i,3));
}
vector<string> solution(vector<vector<string>> tickets) {
vector<string> answer;
dfs(0, "ICN", tickets, "ICN");
sort(all_route.begin(), all_route.end());
get_answer(all_route[0], answer);
return answer;
}
|
cs |
์ฌ๊ธฐ์ ๊ตณ์ด ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๋ฒกํฐ์ ์ ์ฅํด์ง ์๊ณ ๊ทธ๋ ๊ทธ๋ ๋น๊ต๋ฅผ ํตํด์ ์ฌ์ ์์ผ๋ก ์์๋ ๊ฒฝ๋ก๋ก ๊ฐฑ์ ํด์ฃผ๋ ๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์ธ ๋ฏํ๋ค.
<, > ์ฐ์ฐ์๋ฅผ ์จ์ ๋ฌธ์์ด์ ์ฌ์ ์์ ๊ธฐ์ค์ผ๋ก ๋น๊ตํ ์ ์๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค > 3๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ์ ๊ตญ์ฌ์ฌ (0) | 2022.06.21 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ์์ (0) | 2022.06.20 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ๋จ์ด ๋ณํ (1) | 2022.06.20 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ๋คํธ์ํฌ (0) | 2022.06.20 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ๋ฒ ์คํธ์จ๋ฒ (0) | 2022.06.14 |