📑 1. 루시와 엘라 찾기 ⭐ 정답코드SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKEFROM ANIMAL_INSWHERE NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')📑 2. 한 해에 잡은 물고기수 구하기⭐ 정답코드COUNT(ID)에 `FISH_COUNT` 라는 별칭을 주어야 함문제 예시에서 DATE 형식이 'YYYY/MM/DD'로 되어 있는 걸 보고 약간 복잡하게 풀었다.SELECT COUNT(ID) AS FISH_COUNTFROM FISH_INFOWHERE DATE_FORMAT(Time, '%Y/%m/%d') LIKE '2021%' 다른 사람들이 풀이한 것을 확인했는데 더 간단하게 쿼리를 작성할 수 있다. 이 문제는..

My Tech Blog (프로그래머스)
오늘의 명언
📑 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알고리즘으로 결정의 순간마다 최선의 결정을 함으로서 최종적인 답을 구하는 방식으로 모든 정점을 최소 비용으로 연결할 수 있게 해준다.크루스칼 알고리즘의 핵심은 모든 간선을 가중치 기준(여기서는 다리 개설..
📑 1. 문제설명💡 2. 접근방식입출력 예로 주어진 route 배열을 막대그래프로 그려 봤다. 최소한의 카메라를 배치해야 하므로 구간 종료 위치를 기준으로 오름차순 정렬 차량이 구간에서 카메라를 단 한 번만이라도 만나면 됨종료 지점에서 다음 구간과 겹치게 되므로 최소한의 카메라를 배치가능카메라 배치는 도로의 가장 왼쪽 끝부터 탐색하며 시작된다.입출력 예시에서 MIN_VALUE인 -20 지점부터 오른쪽으로 가며 종료구간과 시작구간이 겹치는 부분에 카메라가 배치된다.구간 중 가장 처음으로 만나는 종료 위치는 -15이다.따라서 이 위치에 첫 번째 카메라를 설치한다. 그리고 -13지점에서 현재 구간과 다음 구간이 만나지만 이미 해당 구간에는 카메라가 설치 완료 되었으므로 스킵한다. 그리고 다음 구간인 [-..
📑 1. 문제설명❌ 2. 실패한 시도코드는 작동하지만 정답 처리 X이유: CAR_ID 중복됨SELECT A.Car_idFROM Car_rental_company_car A JOIN Car_rental_company_rental_history B ON A.Car_id = B.Car_idWHERE A.Car_type = '세단' AND B.Start_date BETWEEN '2022-10-01' AND '2022-10-31'ORDER BY A.Car_id DESC;⭐ 3. 정답코드CAR_ID 중복이 없어야 하며 -> DISTINCT대여 기록이 있는 -> ON A.CAR_ID = B.CAR_IDSELECT DISTINCT(A.Car_id)FROM ..

📑 1. 문제설명⭐ 2. 정답코드출고일이 2022-05-01 보다 작거나 같으면 '출고완료'늦으면 출고 대기, 없으면 출고 미정이고 해당 컬럼명은 출고여부라는 이름으로 설정어려운 부분은 없는 쉬운 문제🥳SELECT Order_id, Product_id, DATE_FORMAT(Out_date,'%Y-%m-%d') AS Out_date, CASE WHEN Out_date '2022-05-01' THEN '출고대기' ELSE '출고미정'END AS 출고여부FROM Food_orderORDER BY Order_id;

📑 1. 문제설명⭐ 2. 정답코드SELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' OR Sex_upon_intake LIKE '%Spayed%' THEN 'O' ELSE 'X' END AS 중성화FROM ANIMAL_INSORDER BY ANIMAL_ID; 😊 3. TMIANSI SQL 표준에서는 ALIAS 에 작은따옴표를 사용하는 것이 허용되지 않지만 써도 상관은 없다. (나는 따옴표 썼음)SELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' ..