일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그래프 탐색
- 다익스트라
- join
- DP
- 크루스칼
- 시뮬레이션
- DFS
- 누적합
- 브루트포스
- 에라토스테네스의 체
- 다이나믹 프로그래밍
- 트리
- BFS
- 재귀
- GROUP BY
- 서브쿼리
- 자료구조
- 그래프 이론
- MST
- 다이나믹프로그래밍
- 백트래킹
- 다시
- 투포인터
- 분할정복
- 그리디
- 구현
- 플로이드-워셜
- 수학
- 우선순위큐
- 해시
- Today
- Total
목록그래프 탐색 (24)
기록하고 까먹지 말기
날짜 : 2023. 09. 17 사용 언어 : python 문제 코드 DFS(오답) import sys n, m = map(int, sys.stdin.readline().split()) # 행, 열 graph = list() for _ in range(n): graph.append(" ".join(sys.stdin.readline().rstrip()).split()) visited = [[False] * m for _ in range(n)] visited[0][0] = True dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] def dfs(r, c, flag, cnt): print(r, c, flag, cnt) if (r, c) == (n-1, m-1): print(cnt) exit(..

날짜 : 2023. 07. 25 사용 언어 : python 문제 코드 import sys from collections import deque def bfs(r, c): queue = deque() queue.append([r, c]) dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] visited[r][c] = True cnt = 0 while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx in range(n) and ny in range(m) and not visited[nx][ny] and graph[nx][ny] != 'X': visited[nx][ny] = True queu..

날짜 : 2023. 07. 15 사용 언어 : python 문제 코드 import sys from collections import deque def bfs(r, c): queue = deque() queue.append([r, c]) dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx in range(n) and ny in range(m) and not visited[nx][ny] and graph[nx][ny] == 1: visited[nx][ny] = True # 방문처리 graph[nx][ny] = graph[x][y] ..

날짜 : 2023. 06. 27 사용 언어 : python 문제 코드 import sys def inorder(subtree, depth): # print(subtree, depth) if len(subtree) == 0: return mid = int(len(subtree) // 2) if depth < (K-1) : inorder(subtree[:mid], depth + 1) res[depth].append(subtree[mid]) if depth < (K-1) : inorder(subtree[mid+1:], depth + 1) return K = int(sys.stdin.readline()) # 최종 깊이 tree = list(map(int, sys.stdin.readline().split())) ..

날짜 : 2023. 06. 25 사용 언어 : python 문제 코드 import sys def back(s, now): if len(s) == N: route.append(s) return r, c = now for i in range(4): nx = r + dx[i] ny = c + dy[i] if not visited[nx][ny]: # 겹치지 않은 경우 visited[nx][ny] = True # 방문처리 back(s + dir[i], (nx, ny)) # 재귀 visited[nx][ny] = False t = list(map(int, sys.stdin.readline().split())) N = t[0] rate = dict() # 방위별 확률 dir = ['E', 'W', 'S', 'N'] #..

날짜 : 2023. 06. 23 사용 언어 : python 문제 코드 정답(DP 사용) import sys n = int(sys.stdin.readline()) graph = list() for _ in range(n): graph.append(list(map(int, sys.stdin.readline().split()))) dp = [[[0] * n for _ in range(n)] for _ in range(3)] dp[0][0][1] = 1 # 방향, r, c for i in range(2, n): if graph[0][i] == 0: dp[0][0][i] = dp[0][0][i-1] # 가로 이동 for i in range(1, n): for j in range(1, n): # 현재 위치가 대각선..

날짜 : 2023. 06. 20 사용 언어 : python 문제 코드 import sys import copy v, e = map(int, sys.stdin.readline().split()) # 마을, 도로 graph = [[10**9] * (v) for _ in range(v)] for _ in range(e): a, b, c = map(int, sys.stdin.readline().split()) graph[a-1][b-1] = c fir = copy.deepcopy(graph) # 계산용 # 플로이드 워셜 for j in range(v): for i in range(v): for k in range(v): if i == k: continue fir[i][k] = min(fir[i][k], fir[..

날짜 : 2023. 06. 19 사용 언어 : python 문제 코드 import sys sys.setrecursionlimit(10**9) def search(ro, l, r): if len(l) > 0: left = list() right = list() for i in range(1, len(l)): if l[i] 0: left = list() right = list() for i in range(1, len(r)): if r[i] < r[0]: left.append(r[i]) else: right.append(r[i]) search(r[0]..