일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Reinforcement Learning
- 자료구조
- sklearn
- machine learning
- 그래프 이론
- clustering
- 인공지능
- C++
- Mask Processing
- classification
- 백준
- BFS
- canny edge detection
- TD
- edge detection
- dfs
- exists
- DP
- MySQL
- 딥러닝
- 머신러닝
- AlexNet
- Python
- SIFT
- opencv
- IN
- dynamic programming
- 강화학습
- image processing
- MinHeap
- Today
- Total
목록Python (7)
JINWOOJUNG
본 포스팅은 Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow 2판을 토대로공부한 내용을 정리하기 위한 포스팅입니다. 해당 도서에 나오는 Source Code 및 자료는 GitHub를 참조하여 진행하였습니다.https://github.com/ageron/handson-ml2 GitHub - ageron/handson-ml2: A series of Jupyter notebooks that walk you through the fundamentals of Machine Learning and Deep LA series of Jupyter notebooks that walk you through the fundamentals of Machine ..
접근법 처음에는 배열 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
접근법 dfs를 활용하여 접근하였고, 방문하지 않은 노드에 대하여 dfs를 적용한다면, 연결된 노드들을 방문하고 만약 연결이 안된 다른 그룹이 있다면, 연결 요소의 개수를 증가시키고 다시 dfs를 적용시키면 된다. 정답 import sys sys.setrecursionlimit(10**9) M, N= map(int, sys.stdin.readline().split()) visited = [False]*(M+1) graph = [[]for _ in range(M+1)] for _ in range(N): x, y = map(int, sys.stdin.readline().split()) graph[x].append(y) graph[y].append(x) def dfs(start): visited[start] ..
접근법 처음에는 N으로 입력값은 높이에 대한 안전 영역 을 계산하였지만 문제를 잘못 접근 한 것이었다. 높이가 최소인 1부터, 각 위치의 높이가 쵀대인 값 까지 모두 고려하였을 때, 안전 영역이 최대가 되는 경우를 생각해야 한다. 즉 높이가 1부터 최대로 H까지 존재한다면,1~H 이하인 지점을 모두 잠기게 만드는 상황을 고려해야 한다. 만약 H이하인 경우 모두 잠기기 때문에 1~H-1까지 고려해서 최대인 안전 영역 을 계산하면 된다. dfs()로 접근하여 해결하였으며, 여러번 계산해야 하므로 할때마다 방문한 위치를 표시하기 위한 변수 visited와 안전 영역 의 개수인 cnt를 초기화 한다. 정답 import sys sys.setrecursionlimit(10**9) N = int(input()) la..
접근법 Array를 이용한 BST를 만들어서 접근하려고 했지만, 너무 과하고 시간이 문제여서 Binary Search를 유사하게 구현해서 접근하기로 하였다. 정답 import sys import math N = int(input()) inputs = list(map(int,sys.stdin.readline().split(" "))) inputs.sort() M = int(input()) array = list(map(int,sys.stdin.readline().split(" "))) for i in range(0,M): L = 0 R = N-1 flag = False while L inputs[mid]): L = mid if(array[i] > inputs[R]):break else: R = mid-1 ..