📑 1. 문제설명💡 2. 접근방식입출력 예로 주어진 route 배열을 막대그래프로 그려 봤다. 최소한의 카메라를 배치해야 하므로 구간 종료 위치를 기준으로 오름차순 정렬 차량이 구간에서 카메라를 단 한 번만이라도 만나면 됨종료 지점에서 다음 구간과 겹치게 되므로 최소한의 카메라를 배치가능카메라 배치는 도로의 가장 왼쪽 끝부터 탐색하며 시작된다.입출력 예시에서 MIN_VALUE인 -20 지점부터 오른쪽으로 가며 종료구간과 시작구간이 겹치는 부분에 카메라가 배치된다.구간 중 가장 처음으로 만나는 종료 위치는 -15이다.따라서 이 위치에 첫 번째 카메라를 설치한다. 그리고 -13지점에서 현재 구간과 다음 구간이 만나지만 이미 해당 구간에는 카메라가 설치 완료 되었으므로 스킵한다. 그리고 다음 구간인 [-..

My Tech Blog (정답)
오늘의 명언
" 승리는 가장 끈질긴 자의 것이다. "
📑 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%' ..

📑 1. 문제설명❌ 실패한 시도이름의 대소문자를 구별하지 않는다는 부분이 문제의 핵심 1차 시도 실패WHERE 절에서 `LOWER(NAME)` 해 주었으나 틀림쿼리는 돌아가고 결과는 나오지만 결국 WHERE절에서 LOWER()과 LIKE를 함께 쓴 것은 불필요한 처리를 하는 것이다. MySQL에서 LIKE 연산자는 기본적으로 대소문자를 구별하지 않는다. SELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE LOWER(ANIMAL_TYPE) = 'dog' AND LOWER(NAME) LIKE '%el%'ORDER BY NAME DESC; 2차 시도 실패이번에는 ORDER BY절에 LOWER() 함수를 써서 정렬했더니 틀렸다고 함.WHERE 절이랑 정렬이랑 별개니까 정렬에는 LOW..

📑 1. 특정 옵션이 포함된 자동차 리스트 구하기 문제CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요. ⭐ 정답코드SELECT * FROM CAR_RENTAL_COMPANY_CARWHERE OPTIONS LIKE '%네비게이션%'ORDER BY CAR_ID DESC;📑 2. 자동차 대여 기록에서 장기/단기 대여 구분하기 📌 틀린코드SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d'), DATE_FORMAT(END_DATE, '%Y-%m-%d'), CASE WHEN DATEDIFF(END_DATE..
📑 1. 문제설명💡 2. 접근방식 문제 제한조건1. 한 번에 최대 두명까지 보트에 태울 수 있음2. 몸무게 합이 `limit` 이하여야 함 따라서 최소보트를 사용하는 전략을 짜려면 배열을 정렬하여 가장 가벼운 사람 + 가장 무거운 사람 조합을 짝지어야 함.가장 큰 몸무게를 가진 사람을 최대한 빨리 처리하면서도 보트 사용을 줄일 가능성이 높기 때문이다.만약 두 사람의 몸무게 합이 limit 이하라면, 한 보트에 태울 수 있다. 합이 limit을 초과한다면, 무거운 사람을 반드시 한 명만 보트에 태워야 한다.이렇게 하는 것이 남은 사람들을 효율적으로 처리하기 위한 최선의 선택이다. ⭐ 3. 정답코드import java.util.*;class Solution { public int solution(i..

📑 1. 문제설명💡 2. 접근방식이 문제 핵심은 조건에 따라서 STATUS 라는 컬럼에 다른 결과값을 보여주는 것이다자바에서 조건문으로 IF나 CASE문 쓰는 것처럼 MySQL 에서는 SELECT 절에 CASE 문을 써 줄 수 있다.CASE WHEN 컬럼명 = '조건' THEN '결과값' 해 주면 조건에 따라 다른 결과가 도출된다.그리고 CASE 문을 끝낼 때는 END AS 별칭을 사용한다 만약에 나열한 조건에 해당하지 않는 경우의 기본 값을 주고 싶다면 WHEN 대신 ELSE 절에 기본값을 세팅해 주면 된다. ⭐ 3. 정답코드계속 틀려서 출력은 잘 되는데 왜 틀리나 했더니 MySQL 에서 기본값은 오름차순이었다처음에 내림차순이 기본값이라 생각하고 생략했음ORDER BY BOARD_ID;만 썼더니 계..