알고리즘/프로그래머스

프로그래머스 - 대장균의 크기에 따라 분류하기 2

초심을 찾자 2025. 4. 15. 15:45
SMALL

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
  • 같은 사이즈의 대장균 개체가 서로 다른 이름으로 분류되는 경우는 없습니다.
  • 결과를 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