Banner

My Tech Blog (정답)

오늘의 명언
📑 1. 문제설명✏️ 2. 문제 요약문제에서 주어진 조건CAR_RENTAL_COMPANY_CAR CAR_RENTAL_COMPANY_RENTAL_HISTORY CAR_RENTAL_COMPANY_DISCOUNT_PLAN대여 중인 자동차들의 정보자동차 대여 기록 정보자동차 종류 별 대여 기간 종류 별 할인 정책 정보CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONSHISTORY_ID, CAR_ID, START_DATE, END_DATEPLAN_ID, CAR_TYPE, DURATION_TYPE, DISCOUNT_RATE- 자동차 ID,- 자동차 종류,- 일일 대여 요금(원),- 자동차 옵션 리스트,- 자동차 대여 기록 ID,- 자동차 ID- 대여 시작일, - 대여 종료일- 요금 할인 정책 ID,..
📑 1. 문제설명⭐ 2. 정답코드내가 푼 코드 ORDER BY DATEDIFF (입소일, 퇴소일)SELECT I.ANIMAL_ID, I.NAMEFROM ANIMAL_INS I JOIN ANIMAL_OUTS O ON I.Animal_id = O.Animal_idORDER BY DATEDIFF(I.DATETIME, O.DATETIME)LIMIT 2이렇게 해서 정답처리가 됬는데 다른 사람들이 쓴 코드를 보다가 뭔가 이상한 점 발견!보호소 퇴소일 - 입소일 을 해서 그 값이 큰 순서대로 2건을 반환하는 건데나는 입소일 - 퇴소일로 반대로 적었다 대신 오름차순으로 하니까 작동한다.🐦 3. 다른 사람들이 푼 코드ORDER BY DATEDIFF (퇴소일, 입소일) DESCSELECT I.ANIMAL_ID, I.N..
📑 1. 문제설명❌ 2. 실패한 시도위치틀린부분맞는 쿼리설명SELECTAVERAGEAVG()평균구하는 함수AVERAGE()가 아니고AVG()임 YEAR(YM)YEAR(YM) AS `YEAR`별칭 써야 함컬럼명 YEAR로 출력 ROUND(AVG(PM_VAL1),3) ROUND(AVG(PM_VAL1),2)소수셋째자리에서 반올림하려면 둘째자리까지 결과값이 나타나야 하니까ROUND(컬럼명, 2)로 해야 함WHERELocation2 IS '수원'Location2 = '수원'IS는 NULL 값과의 비교에서 만 사용됨ORDER BYYEAR(YM)YEARSQL의 실행순서는ORDER BY절이 가장마지막에 실행되기 때문에ALIAS 명으로 써줘도 된다꼭 별칭 써야하는 건 아님 SELECT YEAR(YM) AS YEAR,..
📑 1. 문제설명❌ 2. 실패한 코드 PRODUCT_CODE 컬럼이 예를 들면 'A1000011' 이기 때문에SUBSTRING(컬럼명,시작인덱스,끝인덱스)로 앞 두 자리만 떼어 내야 한다. SELECT SUBSTRING(Product_code,1,2) AS CATEGORY, COUNT(SUBSTRING(Product_code,1,2)) AS PRODUCTSFROM PRODUCTGROUP BY SUBSTRING(Product_code,1,2), Product_codeORDER BY Category; 내가 작성한 코드의 실행 결과를 보면 A2 기준으로 GROUP 으로 묶이지 않은 것을 확인 할 수 있다.⭐ 3. 정답코드GROUP BY 절에서 SUBSTRING(Product_code,1,2)로만 묶어야 함P..
📑 1. 문제설명❌ 2. 실패한 시도SELECT CASE WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('01', '02', '03') THEN '1Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('04', '05', '06') THEN '2Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('07', '08', '09') THEN '3Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('10', '11', '12') THEN '4Q' END AS QUARTER, COUNT(..
📑 1. 문제설명💡 2. 접근방식동적계획법(Dynamic Programming)이란?동적 계획법을 아주 쉽게 설명하자면, '이미 계산한 건 기억해 두었다가, 다시 하지 말자'는 전략이다.동적 계획법(Dynamic Programming, DP)은 복잡한 문제를 작은 하위 문제로 나누어 해결하고, 그 결과를 저장하여 동일한 하위 문제를 다시 계산하지 않도록 하는 알고리즘 설계 기법이다. 주로 최적화 문제나 조합 문제를 효율적으로 해결할 때 사용된다. 동적 계획법에는 Top-Down 방식인 메모이제이션과 Bottom-Up 방식인 테이블링이 있다.  Top-Down (메모이제이션)재귀를 사용하여 문제를 해결. 하위 문제의 결과를 저장하여 중복 계산 방지Bottom-Up (테이블링)작은 문제부터 차례대로 해결..
📑 1. 문제설명❌ 2. 실패한 시도SELECT U.User_id, U.Nickname, CONCAT(U.City,' ', U.Street_address1, ' ', U.Street_address2) AS 전체주소, CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8)) AS 전화번호FROM Used_goods_board B JOIN Used_goods_user U ON B.Writer_id = U.User_idHAVING COUNT(BOARD_ID) >= 3ORDER BY U.User_id DESC; - CONCAT 함수는 + 가 아니라 , 를 사용..
📑 1. 문제설명💡 2. 접근방식이 문제는 너무 어려워서 스스로 풀기 힘들어서 검색의 도움을 받음.주어진 문제는 그래프 이론의 최소 신장 트리(MST, Minimum Spanning Tree) 문제이다. 이 문제를 풀기 위해 필요한 전제지식- Union-Find(유니온 파인드) 자료구조- Kruskal's Algorithm (크루스칼) 알고리즘 Kruskal's Algorithm (크루스칼 알고리즘)크루스칼 알고리즘은 위에 말한 최소신장트리(MST)를 구하는 알고리즘이다. 문제의 분류 답게 greedy알고리즘으로 결정의 순간마다 최선의 결정을 함으로서 최종적인 답을 구하는 방식으로 모든 정점을 최소 비용으로 연결할 수 있게 해준다.크루스칼 알고리즘의 핵심은 모든 간선을 가중치 기준(여기서는 다리 개설..
상단으로