문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/301647
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
문제에서 대장균 별 형질을 2진수로 나타내는데, 부모의 형질을 모두 보유해야한다.
SQL에서 비트연산자를 사용해서 같은 것을 찾아야한다.
WHERE CHILD.GENOTYPE & PARENT.GENOTYPE = PARENT.GENOTYPE
AND(&) 연산자는 두 비트가 모두 1인 경우에만 1을 반환한다.
SELECT 6 & 3 AS result;
- 6은 이진수로 110
- 3은 이진수로 011
- AND 연산 결과 010 (즉 2)
다음이기 때문에 & 문을 사용해서 해결해야한다!
코드
SELECT
CHILD.ID AS ID,
CHILD.GENOTYPE AS GENOTYPE,
PARENT.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA AS CHILD
INNER JOIN ECOLI_DATA AS PARENT
ON CHILD.PARENT_ID = PARENT.ID
WHERE CHILD.GENOTYPE & PARENT.GENOTYPE = PARENT.GENOTYPE
ORDER BY ID;
'알고리즘 > SQL' 카테고리의 다른 글
[PROG] LV2 연도별 대장균 크기의 편차 구하기 (MySQL) (0) | 2024.10.17 |
---|---|
[PROG] LV1 특정 형질을 가지는 대장균 찾기 (MySQL) (0) | 2024.10.17 |
[PROG] LV3 대장균의 크기에 따라 분류하기 2 (MySQL) (0) | 2024.10.17 |
[PROG] LV4 특정 세대의 대장균 찾기 (MySQL) (2) | 2024.10.17 |
[PROJ] LV5 멸종위기의 대장균 찾기 (MySQL) (0) | 2024.10.17 |