์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BFS
- ์์๊ตฌํ๊ธฐ
- ๊ทธ๋ฆฌ๋
- ๊ทธ๋ํํ์
- DP
- ์ ๋ ฌ
- ๋ฐฑ์ค
- ์๋ฃ๊ตฌ์กฐ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ํ์ด์ฌ
- ์์ํ์
- ๋๋น์ฐ์ ํ์
- ๋ณํฉ์ ๋ ฌ
- db
- ์๊ณ ๋ฆฌ์ฆ
- DFS
- ์ฐ์ ์์ํ
- ๋์ ๊ณํ๋ฒ
- ๊ทธ๋ํ
- ์ํ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- SQL
- ๋์ ํฉ
- LIS
- ๊ตฌํ
- ์ค๋ธ์
- ๋จธ์ง์ํธ
- ๊น์ด์ฐ์ ํ์
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก - C++ ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก - C++
.23 2024. 11. 8. 11:20๋ฌธ์
์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ด์ฉํ์ฌ ์ฌํ๊ฒฝ๋ก๋ฅผ ์ง๋ ค๊ณ ํฉ๋๋ค. ํญ์ "ICN" ๊ณตํญ์์ ์ถ๋ฐํฉ๋๋ค.
ํญ๊ณต๊ถ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด tickets๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ฐฉ๋ฌธํ๋ ๊ณตํญ ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ชจ๋ ๊ณตํญ์ ์ํ๋ฒณ ๋๋ฌธ์ 3๊ธ์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ์ฃผ์ด์ง ๊ณตํญ ์๋ 3๊ฐ ์ด์ 10,000๊ฐ ์ดํ์ ๋๋ค.
- tickets์ ๊ฐ ํ [a, b]๋ a ๊ณตํญ์์ b ๊ณตํญ์ผ๋ก ๊ฐ๋ ํญ๊ณต๊ถ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
- ์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ๋ง์ผ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ํ๋ฒณ ์์๊ฐ ์์๋ ๊ฒฝ๋ก๋ฅผ return ํฉ๋๋ค.
- ๋ชจ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
tickets | return |
[["ICN", "JFK"], ["HND, "IAD"], ["JFK", "HND"]] | ["ICN", "JFK", "HND", "IAD"] |
[["ICN", "SFO"], ["ICN, "ATL"], ["SFO", "ATL"], ["ATL, "ICN"], ["ATL, "SFO"]] | ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] |
์๊ฐํด ์ค ๊ฒ์ด ์กฐ๊ธ ์๋ ๊ทธ๋ํ ํ์ ๋ฌธ์ .
BFS๋ก ํ ์ ์๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง? ๊ทผ๋ฐ ๋ DFS๋ก ํ์๋ค.
๊ธฐ๋ณธ์ ์ธ ์์ด๋์ด๋
1. ๊ฐ์ง๊ณ ์๋ ํญ๊ณต๊ถ์ ์ํ๋ฒณ ์์ผ๋ก ๋์ดํ๋ค.
2. ICN์ ์์์ผ๋ก ์ฌํ ๊ฒฝ๋ก๋ฅผ ํ์ํด๋๊ฐ๋ค.
3. ํ์ํ๋ฉฐ ๋ฐฉ๋ฌธํ๋ ๊ณตํญ๋ค์ ์ ์ฅํด๋๊ฐ๋ค.
์ธ๋ฐ, ์ฌ๊ธฐ์ ๊ณ ๋ คํ ๊ฒฝ์ฐ์ ์๊ฐ ๋ ๊ฐ์ง ์๋ค.
1. ์ํ๋ฒณ ์์ผ๋ก ๊ฒฝ๋ก ํ์ ์ ํฐ์ผ์ ์ ๋ถ ์์งํ์ง ์์ ์ฑ๋ก ํ์์ด ์ข ๋ฃ๋ ๊ฒฝ์ฐ
์: [ICN → HND], [ICN → KIX], [KIX → ICN]
2. ์ค๋ณต๋ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ
์: [ICN → HND], [JFK → NRT], [HND → JFK], [NRT → ICN], [HND → SFO], [ICN → HND]
๋ฐ๋ผ์ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ๊ณผ์ ์ค์
ํด๋น ๋ ธ๋์์ ์ถ๋ฐํ์ ๋ ํฐ์ผ์ ์ ๋ถ ์์งํ์ง ์์ ์ฑ๋ก ์ฌํ์ด ๋๋ ๊ฒฝ์ฐ
ํด๋น ๋ ธ๋๋ฅผ ์ฌํ์ํ ์ ์๋๋ก ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ false๋ก ๋ฐ๊ฟ์ฃผ๋ ์์ ์ด ์ถ๊ฐ๋๊ณ ,
์ฌํ ๋ณ๋ก ํฐ์ผ ์์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์๊ฒ ํฐ์ผ ์ ๋ณด๋ก๋ถํฐ ๊ทธ๋ํ๋ฅผ ์์ฑํ๋ค.
๋ณ๋ก ํจ์จ์ ์ธ ์ฝ๋๋ ์๋๊ธด ํ์ง๋ง.. ์ด๊ธฐ ์์ด๋์ด๋ก๋ ์ด๋ฐ์์ผ๋ก ์งฐ๋ค..
์ฝ๋
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
map<string, int> airport;
vector<string> answer_temp;
int ticket_no;
bool is_used = false;
vector<vector<pair<bool, string>>> graph;
void DFS(int arrival, int ticket) {
if(ticket == ticket_no) is_used = true;
for(auto& i:graph[arrival - 1]) {
if(!i.first) {
i.first = true;
answer_temp.push_back(i.second);
DFS(airport[i.second], ++ticket);
if(!is_used) {
i.first = false;
answer_temp.pop_back();
}
}
}
}
vector<string> solution(vector<vector<string>> tickets) {
vector<string> answer;
sort(tickets.begin(), tickets.end());
ticket_no = tickets.size();
int count = 1;
for(auto&i : tickets) {
for(auto& j : i) {
if(airport[j]) continue;
airport[j] = count;
count++;
}
}
int airport_count = count - 1;
graph.resize(airport_count, vector<pair<bool, string>> ());
for(auto&i : tickets) {
int arrival = airport[i[0]];
graph[arrival - 1].push_back(make_pair(false, i[1]));
}
answer_temp.push_back("ICN");
DFS(airport["ICN"], 0);
answer = answer_temp;
return answer;
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ถ๋ ์ฌ์ฉ์ - C++ (0) | 2024.11.12 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] N-Queen - C++ (0) | 2024.11.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋จ์์นด๋ฉ๋ผ - C++ (0) | 2024.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋งต๊ฒ - C++ (0) | 2024.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] N์ผ๋ก ํํ - C++ (0) | 2024.04.11 |