일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TD
- Python
- DP
- 강화학습
- edge detection
- 머신러닝
- image processing
- 자료구조
- canny edge detection
- 백준
- IN
- sklearn
- clustering
- AlexNet
- MinHeap
- dynamic programming
- machine learning
- BFS
- 인공지능
- classification
- opencv
- MySQL
- Mask Processing
- Reinforcement Learning
- 그래프 이론
- C++
- dfs
- exists
- 딥러닝
- SIFT
- Today
- Total
목록그래프 이론 (5)
JINWOOJUNG
접근법 Sudo Code 기반으로 작성하면 쉽게 해결 가능하다. sort()를 이용해서 정렬을 통해 정점 번호를 오름차순으로 방문 하였지만, 추후 다른 정렬 기법 기반으로 정렬을 구현할 필요는 보인다. 정답 #include #include #include #include using namespace std; vector ars32_Graph[100001]; bool arb_Visited[100001] = { false }; int32_t ars32_Result[100001]; void bfs(int32_t s32_R); int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int32_t s32_N, s32_M, s32_..
Intro 앞으로 모든 백준 문제는 C++로 해결하고자 한다. 코테를 위해서는 Python이 더 편하지만, 실제 실력을 더 향상시킬 수 있는 것은 C++이기 때문에 코테 준비는 나중에 하기로 했다. 또한, 이번에 자율주행 경진대회를 준비하면서 코드 통합을 진행 하였는데 변수명을 선언하는 것이 전부 다 달라서 애먹었다. 앞으로는 박사님이 정해주신 틀 안에서 타인이 봐도 알아볼 수 있도록 변수명을 통합할 것이다. 접근법 비행기 종류는 vector로 저장하면 된다. a,b쌍은 a,b를 왕복하는 비행기가 있음을 의미하기에 vector 배열의 a와 b index에 모두 저장해야 한다. 모든 국가를 여행하기 위해서 각 국가를 방문했음을 확인하기 위한 bool 형 array가 요구된다. 또한 저장한 비행기 종류를 기..
접근법 처음에는 배열 index가 다르기에 index를 맞추고자 입력받을 때 1인 경우만 graph 배열에 저장하여 dfs()를 돌 때, 1부터 N까지 각 노드에서 시작하여 끝까지 내려가는 경로 중 지나가는 노드를 따로 저장하여 다시 인접행렬로 출력하도록 구현하였다. import sys import heapq sys.setrecursionlimit(10**6) N = int(input()) graph = [[] for _ in range(N+1)] resultGraph = [[0]* N for _ in range(N)] def dfs(x,y,flag): if x == y and flag == False: flag = True elif x == y and flag == True: heapq.heappush..
접근법 단순히 현재 노드의 부모를 찾는거기 때문에, dfs(),bfs()없이 단순하게 해결할 수 있을 것 같아서 아래와 같이 접근했다. import sys N = int(input()) visited = [0] * (N+1) visited[1] = 1 for _ in range(N-1): x, y = map(int,sys.stdin.readline().split(" ")) if visited[x] != 0: visited[y] = x else: visited[x] = y for i in range(2,N+1): print(visited[i]) 입력받는 두 수 중 하나는 무조건 이전에 언급된 노드여야 루트가 1인 트리를 형성할 수 있다. 따라서 입력받음과 동시에 두 수 중 방문되었던 노드가 있다면 다른 노..
접근법 기존의 dfs에서 대각선을 탐색하는 경우의 수를 추가해 줘야 하며, "0 0"을 입력받기 전까지 반복해야 함으로 반복할 때 마다 전체 그래프와 cnt를 초기화 해 줘야 한다. 따라서 dfs()의 parameter에 전체 그래프도 추가되어야 한다. 정답 import sys sys.setrecursionlimit(10**6) di = [0,0,-1,1,1,1,-1,-1] dj = [1,-1,0,0,1,-1,1,-1] def dfs(i, j, Map): Map[i][j] = 0 for k in range(8): I = i+di[k] J = j+dj[k] if 0