일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다시
- 브루트포스
- 재귀
- DP
- 다이나믹프로그래밍
- 그래프 탐색
- 분할정복
- 서브쿼리
- 다익스트라
- 자료구조
- 트리
- DFS
- 구현
- 다이나믹 프로그래밍
- 우선순위큐
- GROUP BY
- 크루스칼
- 백트래킹
- 그래프 이론
- 누적합
- MST
- 시뮬레이션
- 그리디
- 에라토스테네스의 체
- join
- 해시
- 플로이드-워셜
- 투포인터
- BFS
- 수학
- Today
- Total
목록전체 글 (373)
기록하고 까먹지 말기

날짜 : 2023. 07. 13 사용 언어 : python 문제 코드 import sys from collections import deque def game(start): res = int(1e9) queue = deque() queue.append([start, 0]) while queue: now, cnt = queue.popleft() # 현재 위치, 주사위 굴린 횟수 # print(now, cnt) if now == 100: # 결승점 도달 print(cnt) return if len(graph[now]) > 6: visited[graph[now][-1]] = True queue.appendleft([graph[now][-1], cnt]) continue for i in graph[now]: i..

날짜 : 2023. 07. 10 사용 언어 : python 문제 코드 import sys import heapq def dijkstra(start): # 시작노드 queue = list() heapq.heappush(queue, (0, start)) while queue: cost, now = heapq.heappop(queue) # now까지 거리 for i in graph[now]: if dist[i[0]] > cost + i[1]: dist[i[0]] = cost + i[1] heapq.heappush(queue, (cost + i[1], i[0])) return n, m = map(int, sys.stdin.readline().split()) # 노드, 엣지의 개수 graph = [[] for _..

날짜 : 2023. 07. 10 사용 언어 : python 문제 코드 import sys import heapq def dijkstra(node): # 시작노드 q = list() heapq.heappush(q, (0, node)) distance[node] = 0 while q: dist, now = heapq.heappop(q) if dist > distance[now]: continue # 거리 갱신 필요 없는 경우 for i in graph[now]: cost = dist + i[1] if cost < distance[i[0]]: # 거리 갱신 가능한 경우 distance[i[0]] = cost # 최신화 heapq.heappush(q, (cost, i[0])) # heap에 삽입 return N..

날짜 : 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. 26 사용 언어 : python 문제 코드 import sys def check(s): for i in range(1, len(s) // 2 + 1): idx = 0 while idx + 2 * i 곧바로 종료 print(s) exit(0) for i in range(1, 4): next = s + str(i) # 붙이고 체크 if check(next): back(next) n = int(sys.stdin.readline()) back..

날짜 : 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. 6. 22 사용 언어 : python 문제 코드 import sys # sys.setrecursionlimit(10**9) # 행 체크 def check_row(val, c): for i in range(9): if val == graph[i][c]: return False return True # 열 체크 def check_col(r, val): for i in range(9): if val == graph[r][i]: return False return True # 박스 체크 def check_box(r, c, val): a = int(r // 3) * 3 b = int(c // 3) * 3 for i in range(a, a + 3): for j in range(b, b + 3)..