프로그래머스 - 대장균의 크기에 따라 분류하기 2
2025.02.11 - [분류 전체 보기] - 프로그래머스 - 부모의 형질을 모두 가지는 대장균 찾기 에 이어 대장균 시리즈 Level3인 대장균의 크기에 따라 분류하기 2 문제를 가지고 왔다. 해당 문제를 풀기 전에 사전 지식이 있으면 좋을 것 같다. 바로 WITH 절과 NTITLE 함수다. 그래서 해당 포스팅을 쓰기 전에 WITH 절과 NTITLE 함수를 설명하기 위해 포스팅을 하나 했는데 참고하면 좋을 것 같다.
※ 2025.02.12 - [DB] - WITH 절과 NTILE 함수로 SQL 분위(Percentile) 분석하기
알고리즘 난이도 및 시간 ( ※ 개인적인 의견 )
- 난이도 : Level 4( ※ Min : 0, Max : 10 )
- 풀이 시간 : 5분
- 제출 횟수 : 1번
- 풀이 결과 : Pass
문제 설명
아래 사진은 이전 문제들과 동일하게 TABLE안에 있는 Column에 관한 설명이다. 그냥 참고로 ECOLI_DATA TABLE은 이렇게 구성되어 있구나 정도로 이해하고 넘어가면 된다.
아래 문구만 이해하고 매칭되는 함수 or 절이 떠오르면 문제는 쉽게 풀이할 수 있다.
- 내림차순으로 정렬
- 상위 0 ~ 25% = CRITICAL , 26 ~ 50% = HIGH, 51 ~ 75% = MEDIUM, 76 ~ 100 % = LOW
- 단, 총 데이터의 수는 4의 배수이며 같은 사이즈의 대장균 개체가 서로 다른 이름으로 분류되는 경우는 없습니다.
문제풀이
문장별로 QUERY문을 생성하면 아래와 같다. 해당 문장을 조합하여 쿼리문을 만드는 연습을 하면 QUERY문을 만들 때 많은 도움이 될 거라고 생각이 든다.
- 대장균 개체의 크기를 내림차순으로 정렬
- ORDER BY SIZE_OF_COLONY
- 상위 0 ~ 25% = CRITICAL , 26 ~ 50% = HIGH, 51 ~ 75% = MEDIUM, 76 ~ 100 % = LOW
- CASE NTILE(4) OVER
WHEN 1 THEN 'CRITICAL'
WHEN 2 THEN 'HIGH'
WHEN 3 THEN 'MEDIUM'
WHEN 4 THEN 'LOW'
END AS COLONY_NAME
- CASE NTILE(4) OVER
- 같은 사이즈의 대장균 개체가 서로 다른 이름으로 분류되는 경우는 없습니다.
- 결과를 ID에 대해 오름차순 정렬
- SELECT ID
- ORDER BY ID
SELECT ID,
CASE NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC)
WHEN 1 THEN 'CRITICAL'
WHEN 2 THEN 'HIGH'
WHEN 3 THEN 'MEDIUM'
WHEN 4 THEN 'LOW'
END AS COLONY_NAME
FROM ECOLI_DATA
ORDER BY ID;
결과
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/301649
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr