728x90
< 링크 >
여기를 클릭하세요 (프로그래머스 고득점 Kit 106문제 모음)

여기를 클릭하세요 (30. 부모의 형질을 모두 가지는 대장균 찾기)

< 문제 >
부모의 형질을 모두 보유한 대장균의 ID(ID), 대장균의 형질(GENOTYPE), 부모 대장균의 형질(PARENT_GENOTYPE)을 출력하는 SQL 문을 작성해주세요. 이때 결과는 ID에 대해 오름차순 정렬해주세요.

< 내가 작성한 코드 >
SELECT
B.ID,
B.GENOTYPE,
A.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA AS A
JOIN ECOLI_DATA AS B ON A.ID = B.PARENT_ID
WHERE (A.GENOTYPE & B.GENOTYPE) = A.GENOTYPE
ORDER BY ID

< 풀이 >
문제를 풀면서 문제가 점점 어려워지는 것을 느끼고 있다.
나는 이 문제를 셀프 조인(Self Join)을 활용해서 접근했다.
셀프 조인은 최대한 간단하게 말하자면
A 테이블에 B 라는 컬럼이 있으나 직접적인 관계가 아니라서 바로 사용할 수 없을 때
셀프 조인 사용을 생각할 수 있다.

자식 대장균(ID)의 GENOTYPE과 부모 대장균(PARENT_ID)의 GENOTYPE을 비트 연산을 통해 포함 여부를 확인해야 한다. 현재 자식 대장균(ID)의 유전형질은 GENOTYPE으로 있기에 우리가 필요한 것은 부모 대장균(PARENT_ID)의 유전형질이며 이를 활용하기 위해 SELF JOIN을 활용했다.
 

+ Recent posts