Lv2. 부모의 형질을 모두 가지는 대장균 찾기 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/301647
내가 작성한 코드
SELECT E.ID, E.GENOTYPE, EP.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA E -- 자식
JOIN ECOLI_DATA EP -- 부모
ON E.PARENT_ID = EP.ID -- 자식(E)의 부모가 누구인지 부모(EP)에서 찾아옴
WHERE (E.GENOTYPE & EP.GENOTYPE) = EP.GENOTYPE
ORDER BY E.ID;
문제 회고
1. INNER JOIN
- 문제에서 '최초의 대장균의 PARENT_ID는 NULL값'이라고 명시되어있다
- INNER JOIN을 사용하면 E.PARENT_ID = EP.ID 조건에서 NULL인 행들은 자동으로 제외된다
2. 비트 연산 (자식 & 부모) = 부모
- 문제에서 '부모의 형질을 모두 보유한' 을 만족시키기 위해 AND 연산자를 사용한다
- 부모의 형질을 모두 보유했다는건 부모의 비트가 1인 자리는 자식의 비트도 반드시 1이어야 한다
3. 셀프 조인
- 셀프 조인은 같은 테이블을 두 번 불러오기 때문에 정확히 별칭을 붙여주어야 한다
- ON절 : 자식이 부모의 형질을 가졌는지 확인해야 하므로 기준이 되는 행(E)의 옆에 부모의 정보를 불러온다
'코딩테스트' 카테고리의 다른 글
| [26.03.31 코테/회고(MySQL)]-언어별 개발자 분류하기 (0) | 2026.03.31 |
|---|---|
| [26.03.30 코테/회고(MySQL/Oracle)]-저자 별 카테고리 별 매출액 집계하기 (0) | 2026.03.30 |
| [26.03.26 코테/회고(MySQL/Oracle)]-입양 시각 구하기(2) (0) | 2026.03.26 |
| [26.03.25 코테/회고(MySQL/Oracle)]-입양 시각 구하기(1) (0) | 2026.03.25 |
| [26.03.24 코테/회고(MySQL)]-없어진 기록 찾기 (0) | 2026.03.24 |