일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- image processing
- overfitting
- Reinforcement Learning
- opencv
- C++
- clustering
- 딥러닝
- object detection
- sklearn
- dfs
- dropout
- Mask Processing
- exists
- MinHeap
- edge detection
- canny edge detection
- 머신러닝
- MySQL
- BFS
- SIFT
- machine learning
- classification
- Python
- DP
- 강화학습
- 그래프 이론
- TD
- AlexNet
- dynamic programming
- Today
- Total
목록그래프이론 (2)
JINWOOJUNG
접근법 처음에는 N으로 입력값은 높이에 대한 안전 영역 을 계산하였지만 문제를 잘못 접근 한 것이었다. 높이가 최소인 1부터, 각 위치의 높이가 쵀대인 값 까지 모두 고려하였을 때, 안전 영역이 최대가 되는 경우를 생각해야 한다. 즉 높이가 1부터 최대로 H까지 존재한다면,1~H 이하인 지점을 모두 잠기게 만드는 상황을 고려해야 한다. 만약 H이하인 경우 모두 잠기기 때문에 1~H-1까지 고려해서 최대인 안전 영역 을 계산하면 된다. dfs()로 접근하여 해결하였으며, 여러번 계산해야 하므로 할때마다 방문한 위치를 표시하기 위한 변수 visited와 안전 영역 의 개수인 cnt를 초기화 한다. 정답 import sys sys.setrecursionlimit(10**9) N = int(input()) la..
접근법 어려웠다.. 단순히 dfs 측면으로 접근하고자 했는데 " 1->3->2->3" 과 같이 일치하지 않는 집합을 거름과 동시에 중간에 일치하는 집합을 찾아내는 아이디어를 도출하는게 매우 힘들었다... 정답 import sys sys.setrecursionlimit(10**6) N = int(input()) graph = [[] for _ in range(N+1)] for i in range(1,N+1): graph[int(input())].append(i) visited = [0]*(N+1) result = set() def dfs(i, arr): for j in graph[i]: if visited[j]: while arr: tmp = arr.pop() result.add(tmp) if j == t..