[SQL] 재귀 CTE(Command Table Expression)를 이용한 계층적 구조 탐색
·
알고리즘/SQL
SQL에서의 재귀(WITH RECURSIVE)주로 계층 구조, 예를 들어 조직도, 카테고리 트리, 댓글 트리 등을 탐색할 때 사용된다. ✅ 예시 테이블: employeesemployee_idnamemanager_id1CEONULL2ManagerA13ManagerB14StaffA125StaffA226StaffB13 ✅ 목표CEO부터 시작해서, 각 직원이 누구 밑에 있는지를 계층적으로 출력그리고 각 직원의 레벨(깊이) 도 함께 보여줌 WITH RECURSIVE ORG_CHART AS ( -- 1단계: 루트 직원(CEO)을 가져온다. SELECT EMPLOYEE_ID, NAME, MANAGER_ID, 1 AS LEVEL FROM EMPLOYEES ..
[SQL] 년, 월, 성별 별 상품 구매 회원 수 구하기
·
알고리즘/SQL
https://school.programmers.co.kr/learn/courses/30/lessons/131532#qna 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해당 문제에서 주의할 점은 DISTINCT 부분이다. 마지막 예시에서 2022년 1월에 상품을 구매한 회원은 USER_ID 가 1(GENDER=1), 4(GENDER=0)인 회원들이고,2022년 2월에 상품을 구매한 회원은 USER_ID 가 2(GENDER=NULL), 5(GENDER=1), 6(GENDER=1)인 회원들 이므로, 내용과 예시 테이블을 보면 "중복 구매에 대해 하나의 데이터로 처리한다."-> USER_ID가 1번인 사용..
[SQL] 저자 별 카테고리 별 매출액 집계하기
·
알고리즘/SQL
https://school.programmers.co.kr/learn/courses/30/lessons/144856 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr -- 코드를 입력하세요-- 판매중인 도서 정보 BOOK-- 저자 정보 AUTHOR-- BOOK_SALES-- 2022년 1월, 저자 별, 카테고리 별 매출액SELECT B.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY, SUM(S.SALES * B.PRICE) AS TOTAL_SALESFROM BOOK_SALES SJOIN BOOK B ON S.BOOK_ID = B.BOOK_IDJOIN AUTHOR..
[백준 1278번] 연극
·
알고리즘
https://www.acmicpc.net/problem/1278 문제의 조건N명을 가지고, 최대 K개의 장면을 만들어야 한다.한 장면에는 최소 1명의 배우가 있어야 한다.처음 장면과 마지막 장면에는 한 명만 존재해야 한다.장면이 바뀔 때마다 새로운 배우를 넣거나, 기존 배우를 하나 빼는 방법이 있다.각 장면마다 구성하는 배우들은 모두 달라야 한다.가능한 많은 배우들이 출연할 수 있도록 도와줘야 한다.해당 문제를 풀 때에는 BackTracking, bit 연산을 이용해서 풀어주었다. 우선 최대한 배우들이 출연하면서 모든 장면에 다른 배우들이 나오려면 공집합을 제외한 부분집합의 개수를 구해주면 되므로 K = 2^N - 1 가 된다. visited[] : 나올 수 있는 배우들의 장면 ( 1번 배우부터 ..
[백준 1241번] 머리 톡톡
·
알고리즘
https://www.acmicpc.net/problem/1241 문제의 핵심자신이 쓰고 있는 숫자가 다른 사람이 쓰고 있는 모자의 배수라면 count 해준다.동일한 숫자를 쓰고 있는 학생의 수가 있을 수 있다. arr[] : 해당 위치에 적혀있는 모자의 숫자Map map : 현재 모자에 적혀져있는 숫자들의 개수 -> 적혀있는 숫자들의 모자들을 함께 countingcnt[] : 해당 위치에서 자신이 머리를 친 학생의 수를 더한다. 배열을 돌면서 현재 자신의 모자에 적힌 숫자에 약수를 구한 후, 약수에 적힌 다른 사람이 쓰고 있는 모자의 번호의 개수(map의 value) 만큼 counting해서 더해준다. 만약 4의 약수의 경우 1,2,4인데 -> 여기서 2 * 2는 같은 숫자이므로 동일한 약수의 경..