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

날짜 : 2023. 10. 08 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) num = list() for _ in range(n): num.append(int(sys.stdin.readline())) # 입력받음 num.append(int(1e10)) # 마지막 공원 체크 res = [0] * (n + 1) stack = list() stack.append([0, num[0]]) for i in range(1, n + 1): # print(stack) if len(stack) == 0: # 스택이 빈 경우 stack.append([i, num[i]]) continue flag = False while stack: idx, value = ..

날짜 : 2023. 07. 24 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) tower = list(map(int, sys.stdin.readline().split())) stack = list() stack.append((-1, -1)) res = [0] * n # 현재 높이가 스택의 top보다 높다면 pop(반복), 낮으면 해당 인덱스 저장 for i in range(n): while stack: if tower[i] > stack[-1][0]: stack.pop() else: break if not stack: res[i] = 0 else: res[i] = stack[-1][1] stack.append((tower[i], i+1)) ..

날짜 : 2023. 06. 12 사용 언어 : python 문제 코드 import sys from collections import deque snake = deque() dx = [0, 1, 0, -1] # 동, 남, 서, 북 dy = [1, 0, -1, 0] n = int(sys.stdin.readline()) graph = [[0] * n for _ in range(n)] k = int(sys.stdin.readline()) # 사과 개수 for _ in range(k): r, c = map(int, sys.stdin.readline().split()) graph[r-1][c-1] = 1 # 사과 l = int(sys.stdin.readline()) # 방향전환횟수 change = dict() fo..

날짜 : 2023. 06. 01 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) ans = [-1] * n stack = list() stack.append(0) i = 1 while i a[stack[j]]: # 스택의 마지막 원소값을 인덱스로 갖는 수가 현재 값보다 작음 -> 오큰수 ans[stack[j]] = now # stack.pop() else: break stack.append(i) # 현재 인덱스 추가 i += 1 a..

날짜 : 2023. 05. 29 사용 언어 : python 문제 코드 from collections import deque def solution(bridge_length, weight, truck_weights): # 최대 대수, 최대 하중, 트럭 무게 q = deque() res = 0 for i in range(bridge_length): q.append(0) i, s = 0, 0 # 순서, 다리에 올라간 무게, 개수 while True: if i not in range(len(truck_weights)): break res += 1 out = q.popleft() s -= out if s + truck_weights[i] 0: res += 1 out = q.popleft() s -= out q.a..

날짜 : 2023. 03. 31 사용 언어 : python 문제 코드 import copy import sys from collections import deque t = int(sys.stdin.readline()) # 테스트케이스 def AC(com, a): flag = True r = 1 for c in com: # 명령어 if c == "R": r *= (-1) else: if len(a) == 0: # 리스트가 비어있는 경우 flag = False break else: if r == 1: # 역순이 아닌 경우 a.popleft() # 가장 왼쪽 요소 삭제 else: # 역순인 경우 a.pop() # 가장 왼쪽 요소 삭제(정순일 때의 가장 오른쪽) if not flag: print("error")..

날짜 : 2023. 03. 09 사용 언어 : python 문제 코드 import sys from collections import deque n, w, L = map(int, sys.stdin.readline().split()) # 트럭수, 다리 길이, 최대하중 bridge = deque() # 다리 for i in range(w): bridge.append(0) temp = list(map(int, sys.stdin.readline().split())) truck = deque(temp) # 트럭 무게 입력 total = 0 # 현재 다리의 하중 res = 0 """print(bridge) print(truck)""" while True: res += 1 t = bridge.popleft() # 빠져..

날짜 : 2023. 02. 22 사용 언어 : python 문제 코드 import sys sys.setrecursionlimit(10**6) n = int(sys.stdin.readline()) # 도시의 개수 (200 이하) m = int(sys.stdin.readline()) # 여행 계획에 속한 도시의 개수 (1000 이하) parent = [i for i in range(n+1)] # 각 노드별 부모 테이블 def find(node): # 노드의 부모 찾기 if node == parent[node]: # 해당 노드가 부모 노드면 리턴 return node p = find(parent[node]) # 해당 노드에 대한 부모 찾기(거슬러 올라감) parent[node] = p # 부모 노드 갱신 re..