- [프로그래머스 코딩테스트] MySQL Lv.2 부모의 형질을 모두 가지는 대장균 찾기2024년 06월 26일
- chantleman
- 작성자
- 2024.06.26.:59
문제 설명
대장균들은 일정 주기로 분화하며, 분화를 시작한 개체를 부모 개체, 분화가 되어 나온 개체를 자식 개체라고 합니다.
다음은 실험실에서 배양한 대장균들의 정보를 담은 ECOLI_DATA 테이블입니다.
ID : 대장균 개체의 ID
PARENT_ID : 부모 개체의 ID
SIZE_OF_COLONY : 개체의 크기
DIFFERENTIATION_DATE : 분화되어 나온 날짜
GENOTYPE : 개체의 형질
최초의 대장균 개체의 PARENT_ID는 NULL값
문제
부모의 형질을 모두 보유한 대장균의 ID(ID), 대장균의 형질(GENOTYPE), 부모 대장균의 형질(PARENT_GENOTYPE)을 출력하는 SQL문을 작성해주세요. 이때 결과는 ID에 대해 오름차순 정렬해주세요.
예를 들어 ECOLI_DATA 테이블이 다음과 같다면
각 대장균 별 형질을 2진수로 나타내면 다음과 같습니다.
ID1 : 1
ID2 : 1
ID3 : 11
ID4 : 10
ID5 : 100
ID6 : 101
ID7 : 101
ID8 : 1101
각 대장균 별 보유한 형질은 다음과 같습니다.
ID1 : 1 (최초의 대장균 개체이므로 부모가 없습니다.)
ID2 : 1 (부모는 ID1이며 부모의 형질인 1번 형질을 보유하고 있습니다.)
ID3 : 1, 2 (부모는 ID1이며 부모의 형질인 1번 형질을 보유하고 있습니다.)
ID4 : 2 (부모는 ID2이며 부모의 형질인 1번 형질을 보유하고 있지 않습니다.)
ID5 : 4 (부모는 ID4이며 부모의 형질인 2번 형질을 보유하고 있지 않습니다.)
ID6 : 1, 3 (부모는 ID3이며 부모의 형질 1, 2번중 2번 형질을 보유하고 있지 않습니다.)
ID7 : 1, 3 (부모는 ID2이며 부모의 형질인 1번 형질을 보유하고 있습니다.)
ID8 : 1, 3, 4 (부모는 ID6이며 부모의 형질 1, 3번을 모두 보유하고 있습니다.)
따라서 부모의 형질을 모두 보유한 개체는 ID2, ID3, ID7, ID8이며 결과를 ID에 대해 오름차순 정렬하면 다음과 같아야 합니다.
풀이
SELECT A.ID, A.GENOTYPE, B.GENOTYPE AS PARENT_GENOTYPE FROM ECOLI_DATA A LEFT JOIN ECOLI_DATA B ON A.PARENT_ID = B.ID WHERE B.GENOTYPE & A.GENOTYPE = B.GENOTYPE ORDER BY A.ID;
728x90'코딩테스트 > lv2' 카테고리의 다른 글
[프로그래머스 코딩테스트] oracle Lv.2 진료과별 총 예약 횟수 출력하기 (0) 2024.10.18 [프로그래머스 코딩테스트] oracle Lv.2 자동차 평균 대여 기간 구하기 (0) 2024.10.18 [프로그래머스 코딩테스트] Oracle Lv.2 조건에 부합하는 중고거래 상태 조회하기 (0) 2024.07.08 [프로그래머스 코딩테스트] MySQL Lv.2 분기별 분화된 대장균의 개체 수 구하기 (0) 2024.07.04 [프로그래머스 코딩테스트] MySQL Lv.2 특정 물고기를 잡은 총 수 구하기 (0) 2024.07.03 다음글이전글이전 글이 없습니다.댓글