Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

하루에 하나씩 공부하기

특정 세대의 대장균 찾기-LV4 본문

SQL 코딩테스트/LV4

특정 세대의 대장균 찾기-LV4

dltaexox 2025. 2. 11. 15:17

- 문제

3세대의 대장균의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 이때 결과는 대장균의 ID 에 대해 오름차순 정렬해주세요.

 

코딩테스트 연습 - 특정 세대의 대장균 찾기 | 프로그래머스 스쿨

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

- 키포인트

먼저 부모 형질을 찾자 : B.ID=A.PARENT_ID

그 다음, 2세대 형질을 찾자 : PARENT_ID IS NULL : 1세대 형질, 그러므로 PARENT_ID=1세대 형질인 2세대 형질의 ID 찾음

마지막으로, 조인 방식과 똑같은 방식으로 PARENT_ID=2세대 형질인 3세대 형질의 ID 찾기

 

- 코드

SELECT A.ID
FROM ECOLI_DATA A LEFT JOIN ECOLI_DATA B ON A.PARENT_ID=B.ID
WHERE B.PARENT_ID IN (SELECT ID FROM ECOLI_DATA WHERE PARENT_ID IS NULL)
ORDER BY ID;

맨 처음에 못 푼 문제 풀어서 신남 -> 항상 테스트케이스 출력값을 보면서 뭐가 문제인지 파악하자

SELECT F.ID
FROM ECOLI_DATA AS F
JOIN ECOLI_DATA AS S ON F.PARENT_ID = S.ID
JOIN ECOLI_DATA AS T ON S.PARENT_ID = T.ID
WHERE T.PARENT_ID IS NULL
ORDER BY F.ID ASC

 

SELECT ED3.ID
FROM ECOLI_DATA AS ED1
INNER JOIN ECOLI_DATA AS ED2
ON ED1.ID = ED2.PARENT_ID AND ED1.PARENT_ID IS NULL
INNER JOIN ECOLI_DATA AS ED3
ON ED3.PARENT_ID = ED2.ID