[C++] 깊이 우선 탐색 순회

칼든개구리·2025년 4월 24일
0
post-thumbnail

깊이 우선 탐색으로 모든 그래프의 노드를 순회하는 함수 solution()을 작성하세요. 시작 노드는 문자형 start로 주어집니다. graph 배열은 [출발노드,도착노드] 쌍들이 들어 있는 배열입니다. 반환값은 그래프의 시작 노드부터 모든 노드를 깊이 우선 탐색으로 탐색한 경로가 순서대로 저장된 배열입니다.

코드

#include <unordered_map>
#include <unordered_set>
#include <vector>
using namespace std;

unordered_map<char, vector<char>> adjList;
vector<char> result;
unordered_set<char> visited;

void dfs(char node){
	visited.insert(node);
    result.push_back(node);
    
    for(char neighbor: adjList[node])
    {
    	if(viisted.find(neighbor)==visited.end())
        {
        	dfs(neighbor);
        }
    }
}

vector<char> solution(vector<pair<char, char>> graph, char start)
{
	for(auto& edge: graph)
    {
    	char u= edge.first;
        char v= edge.second;
        adjList[u].push_back(v);
    }
    dfs(start);
    return result;
}
profile
메타쏭이

0개의 댓글