미식가의 개발 일기

[프로그래머스/MySQL] 특정 형질을 가지는 대장균 찾기 본문

SQL

[프로그래머스/MySQL] 특정 형질을 가지는 대장균 찾기

대체불가 핫걸 2025. 4. 19. 22:44

문제 

  • 2번 형질이 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체의 수(COUNT)를 출력

각 대장균 별 형질을 2진수로 나타내면 다음과 같습니다.
ID 1 : 1000₍₂₎
ID 2 : 1111₍₂₎
ID 3 : 1₍₂₎
ID 4 : 1101₍₂₎

각 대장균 별 보유한 형질을 다음과 같습니다.
ID 1 : 4
ID 2 : 1, 2, 3, 4
ID 3 : 1
ID 4 : 1, 3, 4

 

해결 방법

  • 비트 연산자 &를 사용해 이진수로 바꿔 계산해야 하며 아래 표는 각 비트가 켜졌을 때의 정수값을 나타낸 것이다. 
첫 번째 형질(비트) 0001 > 1
두 번째 형질(비트) 0010 > 2
세 번째 형질(비트) 0100 > 4

두 번째 비트는 꺼져 있어야 하고, 첫 번째와 세 번째 비트는 켜져 있어야 하므로 (GENOTYPE & 2) != AND ((GENOTYPE & 1) = 1 OR (GENOTYPE & 4) = 4)를 만족해야 한다,

 

정답

SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA
WHERE (GENOTYPE & 2) != 2 AND ((GENOTYPE & 1) = 1 OR (GENOTYPE & 4) = 4)

 

반응형