2024/12/11 15

[241211] TIL - 시간복잡도 정리

배열 (리스트) : 같은 타입(객체의 주소값)의 변수들로 이루어진 집합. 메모리의 연속공간에 값이 채워져 있는 형태장점: 검색 성능이 좋다 O(1)단점: 값의 삽입과 삭제에서 비효율적 O(n). 메모리 활용에 비효율적연결리스트 (deque) : 값과 주소를 묶은 노드를 주소로 연결한 자료구조 (deque는 이중 연결리스트)장점: 주소로 연결되어 있어 값을 삽입하거나 삭제하는 연산의 속도가 빠름 O(1)단점: 원소로 바로 접근이 불가능함. Head부터 차례대로 접근 O(n)리스트에서 pop(0)을 할 경우 O(n), insert(0, x)을 할 경우 O(n)deque에서 popleft()을 할 경우 O(1), appendleft(x)을 할 경우 O(1) deque의 roate(k) 는 시간복잡도 O(k)를..

TIL 2024.12.11

조건에 맞는 사용자와 총 거래금액 조회하기

[문제] USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. BOARD 테이블과 USER 테이블을 각각 WRITER_ID와 USER_ID로 JOIN2. STATUS가 DONE인 행들만 필터링 (WHERE)3. USER_ID로 GROUP BY 후 PRICE을 SUM → 총거래금액4. 총거래금액이 70만인 행들만 필터링 (HAVING) → MYSQL은 HAVING에 SELECT 절의 별칭을 사용할 수 있다5. 회원ID, 닉네임, 총거래금액 선택6.. 총거래금액으로 오름차순 정렬[정답]SELECT ..

평균 일일 대여 요금 구하기

[문제] CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정해주세요. [단계별 풀이] 1. CAR_TYPE이 SUV인 행들만 필터링2. DAILY_FEE를 AVG 한 후 AVERAGE_FEE로 지정3. ROUND로 첫 번째 자리서 반올림[정답] SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEEFROM CAR_RENTAL_COMPANY_CARWHERE CAR_TYPE = 'SUV'

조건에 맞는 도서 리스트 출력하기

[문제] BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요.결과는 출판일을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. PUBLISHED_DATE가 2021년이면서 CATEGORY가 인문인 행들만 필터링2. 도서ID, 출판일(포맷 지켜야함)를 선택3. 출판일을 오름차순 정렬[정답]SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') PUBLISHED_DATEFROM BOOKWHERE PUBLISHED_DATE LIKE '2021%'AND CATEGORY = '인문'

루시와 엘라 찾기

[문제] 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요. [단계별 풀이] 1. 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty 인 행들을 필터링한다2. 아이디와 이름, 성별 및 중성화 여부를 선택한다[정답]SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKEFROM ANIMAL_INSWHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogen', 'Sabrina', 'Mitty')

성분으로 구분한 아이스크림 총 주문량

[문제] 상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요. [단계별 풀이] 1. FIRST_HALF 테이블과  ICECREAM_INFO 테이블을 FLAVOR 기준으로 JOIN2. INGREDIENT_TYPE 을 GROUP BY3. TOTAL_ORDER를 SUM 한 후 TOTAL_ORDER 로 별칭4. TOTAL_ORDER를 오름차순 정렬[정답]SELECT I.INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDERFROM FIRST_HALF FJOIN ICECREAM_INFO ION F.FLAVOR =..

조건별로 분류하여 주문상태 출력하기

[문제] FOOD_ORDER 테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 2022년 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. CASE WHEN 문으로 출고일자가 5월 1일보다 같거나 작으면 출고완료, 이후는 출고대기, NULL이면 출고미정2. 주문ID, 제품ID, 출고일자, 출고여부를 선택3. 주문ID 기준으로 오름차순 정렬[정답]SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d'), CASE WHEN OUT..

조건에 맞는 도서와 저자 리스트 출력하기

[문제] '경제' 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요.결과는 출판일을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. BOOK 테이블과 AUTHOR 테이블을 AUTHOR_ID 기준으로 JOIN2. CATEGORY가 경제인 행들만 필터링3. 도서 ID, 저자명, 출판일 출력4. 출판일 기준으로 오름차순 정렬5. 날짜 포맷 맞춰야해요[정답]SELECT B.BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOK BJOIN AUTHOR AON B.A..

보호소에서 중성화한 동물

[문제] 보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 아이디 순으로 조회하는 SQL 문을 작성해주세요. [단계별 풀이] 1. ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 ANIMAL_ID 기준으로 JOIN2. INS의 SEX_UPON_INTAKE가 'Intact' 이면서 OUTS의 SEX_UPON_OUTCOME이 'Spayed' 또는 'Neutered' 인 행을 필터링3. 아이디와 생물 종, 이름을 선택4. ID 순으로 오름차순 정렬 참고: REGEXP보다 LIKE 연산자가 단순문자열 패턴 매칭이기 때문에 좀 더 빠릅니다.[정답]SELECT I.ANIMAL_ID,..

오랜 기간 보호한 동물2

[문제] 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다. [단계별 풀이] 1. ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 ANIMAL_ ID 기준으로 JOIN2. 아이디와 이름을 선택3. INS의 DATETIME과 OUTS의 DATETIME의 차이로 내림차순 정렬4. LIMIT 으로 2행 제[정답]SELECT I.ANIMAL_ID, I.NAMEFROM ANIMAL_INS IJOIN ANIMAL_OUTS OON I.ANIMAL_ID = O.ANIMAL_IDORDER BY O.DATETIME-I.DATETIME DESCLIMIT 2