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

날짜 : 2023. 10. 01 사용 언어 : oracle 문제 코드 -- 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문 -- 결과는 보호 기간이 긴 순으로 조회 select * from ( select a.animal_id, a.name -- 아이디, 이름 출력 from animal_ins a join animal_outs b on a.animal_id = b.animal_id order by (b.datetime - a.datetime + 1) desc -- 보호기간이 긴 순으로 정렬 ) where rownum < 3 ; 풀이 - 보호기간을 계산한 다음, 해당 데이터를 내림차순으로 정렬하여 서브쿼리를 작성한다. - 그 다음 해당 테이블을 토대로 2개 ..

날짜 : 2023. 09. 13 사용 언어 : python 문제 코드 def dfs(row, depth): cnt = 0 # 개수 저장용 if depth == len(row): # 마지막 행까지 도달 return 1 for i in range(len(row)): row[depth] = i # 해당 row에서 퀸을 위치시켰을 때 for j in range(depth): if row[depth] == row[j] : break # 같은 열인지 체크 if abs(row[depth] - row[j]) == (depth - j): break # 대각선인지 체크 else: cnt += dfs(row, depth+1) return cnt def solution(n): row = [0] * n # 리스트 row의 i번..

날짜 : 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. 09 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) line = list() for _ in range(n): a, b = map(int, sys.stdin.readline().split()) # 전깃줄 입력 line.append([a, b]) line.sort() # a 기준으로 정렬 # print(line) dp = [1] * n for i in range(1, n): for j in range(i): if line[i][1] > line[j][1] and dp[i] b2인 경우에 발생한다. - 그렇기 때문에 반대로 전깃줄들을 a에 대하여 오름차순으로 정렬한 후, b에 대하여 메모이제이션을 실행한다. - 즉, ..

날짜 : 2023. 05. 30 사용 언어 : python 문제 코드 from collections import deque def solution(rectangle, a, b, itemX, itemY): graph = [[-1] * 102 for _ in range(102)] for r in rectangle: x1, y1, x2, y2 = r x1 *= 2 # 2배처리 y1 *= 2 x2 *= 2 y2 *= 2 for i in range(x1, x2 + 1): for j in range(y1, y2 + 1): if x1 < i < x2 and y1 < j < y2: # 테두리 채우기 graph[i][j] = -2 # 내부 elif graph[i][j] != -2: # 테두리 graph[i][j] = 0..

날짜 : 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. 05. 09 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) # 수열 입력 up = [0] * n down = [0] * n total = [0] * n for i in range(n): # 기준 for j in range(i): # 기준값보다 작은 수 + 그 수의 인덱스의 오름차순수열 개수 최신화 if a[i] > a[j] and up[i] < up[j]: up[i] = up[j] up[i] += 1 #print(up) for i in range(n-1, -1, -1): # 기준값(역순으로 진행) for j in range(n-1, i..

날짜 : 2023. 05. 05 사용 언어 : python 문제 코드 import sys n, k = map(int, sys.stdin.readline().split()) # 동전 종류, 가치의 합 dp = [0] * (k+1) dp[0] = 1 coin = list() for _ in range(n): coin.append(int(sys.stdin.readline())) coin.sort() # 동전 정렬 for i in range(n): # 각 동전에 대하여 체크 if i == 0: for j in range(coin[0], len(dp), coin[0]): dp[j] = 1 else: for j in range(coin[i], len(dp)): dp[j] += dp[j - coin[i]] #prin..