코딩테스트

[26.03.27 코테/회고(MySQL)]-부모의 형질을 모두 가지는 대장균 찾기

지니248 2026. 3. 27. 15:32

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)의 옆에 부모의 정보를 불러온다