데이터 분석 기술 블로그

특정 형질을 가지는 대장균 찾기 _ Lv1. 프로그래머스 본문

SQL/문제풀이

특정 형질을 가지는 대장균 찾기 _ Lv1. 프로그래머스

데이터분석가 이채은 2024. 8. 12. 09:00

 

Solution

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

 

이 문제는 비트 관련된 문제이다. 2진수로 바꾸었을 때 오른쪽부터 첫 번째 자리가 1이면 1번 형질을 가지고 있는 것이고, 0이면 1번 형질이 없는 것이다. 비트 문제를 풀기 위해 비트 AND 연산자를 사용했다. 두 수의 비트값을 비교해서 모두 1인 경우에만 1을 반환하는 연산이다. 그렇기 때문에 3번 형질이 있는지 없는지를 확인하기 위해서는 3이 아니라 2의 제곱인 4와 비트값을 비교해야 한다.

또 SELECT COUNT(*)만 사용하면 결과 테이블 열 이름에 COUNT(*)이라고 나온다. 이것은 원하는 결과가 아니므로 'AS'를 붙여서 원하는 열 이름이 나오도록 한다.