본문 바로가기

반응형

Algorithm_프로그래머스/그래프,DFS,BFS

(4)
[프로그래머스 c++ X] 여행경로 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 31 32 33 34 35 36 37 38 39 40 #include #include #include using namespace std; // [프로그래머스 c++ X] 여행경로 // 문제: // 접근: // 풀이: // 주의: 노드가 서로 이어지지 않은 경우 처리하는 것 주의 #define MAX 10001 bool visit[MAX]; vector answer; bool ok; void dfs(string start,vector& tickets,vector tp,int cnt){ // 현재 공항,티켓배열,현째까지 경로, 경로에 포함된 노드갯수 // 경로를 ..
[프로그래머스 c++ O] 타겟 넘버 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 31 32 33 34 #include #include using namespace std; // [프로그래머스 c++ O] 타겟 넘버 // 문제: 주어진 숫자를 더하거나 빼서 원하는 값이 나오는 경우의 수 구하기 // 접근: 더하거나 빼는 모든 경우 -> 완탐 재귀 1.더한경우, 2.뺀경우 // 시간복잡도: O(2^20) = 100만 // 풀이: // 재귀로 완탐(숫자배열의 인덱스, 합) 인자 // 종료조건: 모든 숫자 계산완료되면 // 더한경우 뺀경우 재귀 int tar,n,cnt=0; vector number; void re(int idx,int sum){ ..
[프로그래머스 c++ O] 네트워크 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 31 32 33 34 35 36 37 38 #include #include using namespace std; // [프로그래머스 c++ O] 네트워크 // 문제: 컴퓨터들의 네트워크 갯수 구하기 = 그래프의 연결요소 구하기 // 접근: 그래프의 연결요소 구하기 -> dfs // 시간복잡도: O(정점+ 간선의 갯수) = n+ (n-1)*n/2 // 풀이: // 1차원 노드완탐 방문 하지 않았으면 -> dfs, 네트워크갯수 증가 // dfs에서 방문처리,자신노드예외, 방문하지 않고 간선있으면 해당노드와 연결된 모든 노드 탐색 #define MAX 201 bool..
[프로그래머스 c++ O] 카카오프렌즈 컬러링북 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include #include #include #include using namespace std; // [프로그래머스 c++ O] 카카오프렌즈 컬러링북 // 문제: 그림의 각 영역의 갯수와 가장 큰 영역의 사이즈를 구하라 // 접근: 이차원 그래프-> dfs,bfs -> 영역의 갯수:dfs 이용 // 시간복잡도: O() // 풀이: // 프로그래머스에선 방문배열 초기화 해야 함 // ..

반응형