Programmers 멸종위기의 대장균 찾기

Pocketopi·2025년 4월 28일
post-thumbnail

🔔 문제

자식이 없는 대장균을 세대별로 찾아라.
[멸종위기의 대장균 찾기 (Level 5)]

🎯 풀이 전략

🔑 핵심 포인트

RECURSIVE WITH를 이용해 세대를 나누어 주었다.
그 이후 NOT EXISTS를 통해 자식이 없는 대장균을 찾고,
GROUP BY를 통해 세대 별 자식이 없는 대장균 수를 최종적으로 찾아주었다.

💻 정답 쿼리 예시

WITH RECURSIVE CTE AS (
    SELECT ID, 1 AS GENERATION, PARENT_ID
    FROM ECOLI_DATA
    WHERE PARENT_ID IS NULL

    UNION ALL

    SELECT E.ID, C.GENERATION + 1 AS GENERATION, E.PARENT_ID AS PARENT_ID
    FROM ECOLI_DATA E JOIN CTE C
    ON E.PARENT_ID = C.ID
)

SELECT COUNT(*) AS COUNT, P.GENERATION
FROM CTE P
WHERE NOT EXISTS (SELECT 1
                  FROM CTE C
                  WHERE C.PARENT_ID = P.ID)
GROUP BY P.GENERATION
ORDER BY P.GENERATION

💡 핵심문법 및 배운 점

  • WITH RECURSIVE
  • EXISTS

⏱️ 걸린 시간: 29분 00초

프로그래머스 모든 MYSQL 문제 끝!

profile
통계학/컴퓨터공학 전공 4학년 학생 DA뿌수기 일기장

2개의 댓글

comment-user-thumbnail
2025년 4월 28일

프로그래머스 SQL의 신

1개의 답글