- 최소 힙(min-heap)의 구조 - 삽입/삭제: O(logN) import heapq로 사용 가능 push: heapq.heappush(hq, item) pop: heapq.heappop(hq) import heapq pq = [] heapq.heappush(pq, 6) heapq.heappush(pq, 12) heapq.heappop(pq) heapify - 리스트 x를 heap으로 변환 x = [4, 3, 1, 2, 5, 6] print(x) # [4, 3, 1, 2, 5, 6] heapq.heapify(x) print(x) # [1, 2, 4, 3, 5, 6] heapq를 사용하는 이유? from queue import PriorityQueue로 일반 우선순위 큐도 사용할 수 있다. 하지만 이..
https://programmers.co.kr/learn/courses/30/lessons/59041 코딩테스트 연습 - 동명 동물 수 찾기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 문제. 즉, ANIMAL_INS에 NAME이 2번 이상 카운트 된 레코드를 출력하면 된다. -> COUNT(NAME) >= 2 이 조건을 만족 하는 그룹을 ..
https://programmers.co.kr/learn/courses/30/lessons/59040 코딩테스트 연습 - 고양이와 개는 몇 마리 있을까 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr ANIMAL_INS 테이블에 있는 동물 중 고양이와 개가 몇 마리씩 있는지 조회하는 문제다. 테이블에 있는 동물은 무조건 개 아니면 고양이라서 WHERE절을 이용해 조건을 추가해줄 필요는 없다. 따라서 간단하게 ANIMAL_TYPE별로 그룹..
https://programmers.co.kr/learn/courses/30/lessons/59408 코딩테스트 연습 - 중복 제거하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr ANIMAL_INS에 존재하는 동물의 이름이 몇개인지 조회해야 한다. 두 가지 조건이 있다. 1. 이름이 없는(NAME == NULL) 레코드는 집계하지 않는다. 2. 중복되는 이름은 하나만 카운트 한다. 먼저 1번 조건을 만족시키려면 WHERE문에 이름이..
https://programmers.co.kr/learn/courses/30/lessons/59406 코딩테스트 연습 - 동물 수 구하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 추가적인 조건 없이 ANIMAL_INS에 들어와있는 동물의 수를 세면 된다 -> COUNT(*) 이 문제도 예제와 같은 칼럼 이름으로 출력하고 싶다면 AS count를 뒤에 붙이면 된다. (아무 조건이 없으니 괄호 안에 그냥 *을 넣으면 된다) SELEC..
https://programmers.co.kr/learn/courses/30/lessons/59415 코딩테스트 연습 - 최댓값 구하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 간단한 최댓값 구하기 문제다 SELECT MAX(DATETIME) FROM ANIMAL_INS 요렇게 쓰면 요렇게 나온다 문제의 예시 처럼 칼럼 이름을 '시간'으로 바꾸려면 SELECT문 뒤에 AS '시간' 을 추가해주면 된다! SELECT MAX(DATE..
https://programmers.co.kr/learn/courses/30/lessons/59405 코딩테스트 연습 - 상위 n개 레코드 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 가장 먼저 들어온 동물의 이름을 조회한다. 즉 DATETIME이 최솟값인 레코드를 조회해야 한다. point: WHERE절 안에 다시 SELECT MIN으로 최솟값을 찾는다 SELECT NAME FROM ANIMAL_INS WHERE DATETIME =..
https://programmers.co.kr/learn/courses/30/lessons/59404 코딩테스트 연습 - 여러 기준으로 정렬하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 이번엔 정렬 기준이 2개! 첫번째로는 이름순으로 정렬 후 이름이 같다면 DATETIME이 최근인 순으로 정렬을 시켜주어야 한다. ORDER BY 뒤에 원하는 순서대로 작성하면 된다! point: ORDER BY 첫번째 조건, 두번째 조건 (역순이면..