728x90

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

여기를 클릭하세요 (29. 특정 형질을 가지는 대장균 찾기)

< 문제 >
2번 형질이 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체의 수(COUNT)를 출력하는 SQL 문을 작성해주세요. 1번과 3번 형질을 모두 보유하고 있는 경우도 1번이나 3번 형질을 보유하고 있는 경우에 포함합니다.

< 내가 작성한 코드 >
SELECT COUNT(*) COUNT
FROM ECOLI_DATA
WHERE GENOTYPE & 2 != 2
AND (GENOTYPE & 1 = 1
OR GENOTYPE & 4 = 4);

< 풀이 >
'2번 형질을 보유한다'는 말이 무슨 뜻인지 몰라서 처음엔 쉽지 않았는데,
그러다 2진수로 바꿔서 결과가 2가 아니면 '보유하지 않는다'는 의미로 생각할 수 있었다.
그래서 C언어에서 알게된 비트연산자 &를 생각했다.
쿼리의 where 조건문에서 & 2를 해봤다.
(개인적으로 SQL에 비트연산자를 쓸 수 있다는걸 이번에 처음 알았다.)

+ Recent posts