분류 전체보기
-
[oracle] JOIN - 5월 식품들의 총매출 조회하기프로그래머스/쿼리 2025. 3. 24. 17:35
SELECT A.PRODUCT_ID, A.PRODUCT_NAME, SUM(B.AMOUNT * A.PRICE) AS TOTAL_SALES FROM FOOD_PRODUCT AJOIN FOOD_ORDER BON A.PRODUCT_ID = B.PRODUCT_IDWHERE TO_CHAR(B.PRODUCE_DATE, 'YYYY-MM') = '2022-05'GROUP BY A.PRODUCT_ID, A.PRODUCT_NAMEORDER BY TOTAL_SALES DESC, A.PRODUCT_ID; 조인 후 집계함수 사용해서 구하면 됨
-
[이분탐색] - gpt 문제 1카테고리 없음 2025. 3. 24. 10:27
1. K번째 수 찾기 gpt가 알려준 코드 left = 1right = N*N 으로 해서이분탐색public class KthSmallest { // x 이하의 수가 배열에서 몇 개인지 세는 함수 public static int countLessEqual(int N, int x) { int count = 0; for (int i = 1; i 이 중에서 아래 메서드에 대해 설명하자면public class KthSmallest { // x 이하의 수가 배열에서 몇 개인지 세는 함수 public static int countLessEqual(int N, int x) { int count = 0; for (int i = 1..
-
[oracle] String, Date - 오랜 기간 보호한 동물(2)프로그래머스/쿼리 2025. 3. 23. 14:36
SELECT * FROM ( SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_INS A, ANIMAL_OUTS B WHERE A.ANIMAL_ID = B.ANIMAL_ID ORDER BY (B.DATETIME - A.DATETIME) DESC)WHERE ROWNUM 보호기간 정렬을 아래와 같이 표시하고, ORDER BY (B.DATETIME - A.DATETIME) DESC 2개만 표시하라고 했으므로 WHERE ROWNUM
-
[mysql] SELECT - 특정 세대의 대장균 찾기프로그래머스/쿼리 2025. 3. 19. 12:59
재귀 이용WITH RECURSIVE EcoliHierarchy AS ( -- 1세대 대장균: PARENT_ID가 NULL인 개체 SELECT ID, PARENT_ID, 1 AS generation FROM ECOLI_DATA WHERE PARENT_ID IS NULL UNION ALL -- 2세대 대장균: 부모가 1세대인 개체 SELECT e.ID, e.PARENT_ID, eh.generation + 1 FROM ECOLI_DATA e JOIN EcoliHierarchy eh ON e.PARENT_ID = eh.ID WHERE eh.generation = 1 UNION ALL -- 3세대 대장균: 부모가 2세대인..
-
[mysql] SELECT - 대장균의 크기에 따라 분류하기 2프로그래머스/쿼리 2025. 3. 19. 11:51
SELECT A.ID, CASE WHEN A.R > A.MAX_ID * 0.75 THEN 'CRITICAL' WHEN A.R > A.MAX_ID* 0.5 THEN 'HIGH' WHEN A.R > A.MAX_ID * 0.25 THEN 'MEDIUM' ELSE 'LOW' END AS COLONY_NAME FROM (SELECT ID # 순위 , ROW_NUMBER() OVER (ORDER BY SIZE_OF_COLONY) AS R # 총 데이터의 수 , MAX(ID) OVER() AS MAX_ID FROM ECOLI_DATA) AORDER BY ID 설명하자면 , ROW_NUMBER() OVER (ORDER BY SIZE_OF_COLONY) A..
-
2186 문자판백준/DP 다이나믹 프로그래밍 2024. 8. 27. 22:18
dp 와 dfs 를 이용한다. 거꾸로 찾아나가는 방식이다.BREAK 이 문자를 찾아나가야 할 때, dp[1][2][3] = 위치(1,2) 에서 시작된 문자로 BREAK 문자열의 3번째 부터 끝 문자열까지 완성할 수 있는 경우의 수이다.즉, AK 를 완성할 수 있는 경우의 수로, KAKT XEAS YRWU ZBQP 위치 (1,2) 의 문자열 = A인데,여기에서 좌,우,위, 아래로 움직여서 K가 있는 경우를 찾아보면 한 가지 경우를 찾을 수 있다.때문에 dp[1][2][3] = 1 이다. (1) 코드 설명 KAKT XEAS YRWU ZBQP 1) BREAK에서 맨 처음 문자 B가 있는 위치(3,1)에서 dfs가 시작한다. =============================== KAKTXEASYRWU..
-
1135 뉴스 전하기백준/DP 다이나믹 프로그래밍 2024. 8. 23. 13:18
예제를 가지고 설명하자면, 5-1 0 0 2 2 다음과 같은 상황을 생각할 수 있다.즉 민식이가 (루트 노트 0) 부하직원에게 연락을 하는데(단, 직원들에게 동시에 연락할 수 없음) 1초 : 0번 노드 -> 2번 노드 직원2초 : 0번 노드 -> 1번 노드 직원, 2번 노드 -> 3번 노드 3초 : 2번 노드 -> 4번 노드 위의 경우는 위에서 아래로 내려오며 시간 계산한 경우를 설명한 것이고, 문제 풀이는 아래에서 위로 시간 계산을 한다. 일단 트리 구조에 본인과 연결된 노드를 저장한다tree[0] = 1,2tree[1] = 없음tree[2] = 3,4tree[3] = 없음tree[4] = 없음 dfs를 이용하는데,0번 노드부터 시작한다. 그러면 0번 노드에서 시작해서,..
-
2156 포도주 시식백준/DP 다이나믹 프로그래밍 2024. 8. 9. 22:29
입력값을 wine 배열에 받는다고 하면, dp[1] = wine[1]dp[2] = dp[1] + wine[2] 이다. 그 이후부터는, dp[i] = Math.max(dp[i-1], Math.max(dp[i-2] + wine[i] , dp[i-3] + wine[i-1] + wine[i])) 즉, dp[5] 를 구하고 싶으면, 1) dp[4]2) dp[3] + wine[5]3) dp[2] + wine[4] + wine[5] 중에서 제일 큰 값을 고르면 된다. 1) dp[4] 를 구한다는 것은,연속으로 놓여 있는 3잔을 모두 마실 수 없다고 했으므로,이미 3,4 번째 포도주를 마셨다는 뜻이 된다. 그래서 5번째 포도주를 마실 수 없다. 2) dp[3] + wine[5] 를 구한다는 것은,3번째까지 마..