💻 프로그래밍/프로그래머스

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

ssoniya 2025. 2. 11. 15:14


* 비트 연산자를 이용하여 풀어야하는 문제다.

 

특정 형질이 없는 개체를 찾으려면 &연산자를 사용해야한다

왜 ?

-> & 연산자는 특정 비트가 존재하는지 확인하는 데 사용하는 것. 
->특정 형질이 없는 개체를 찾으려면 & 연산의 결과가  0인지 확인하면 된다.

 

< 문제풀이 >

 

1. GENOTYPE & (1 | 4) > 0  → 형질 1 또는 3을 보유한 개체 찾기

- 1 | 4는 비트 OR 연산을 수행하여 0101이 된다.
-GENOTYPE & 5 > 0

→ 즉, 비트 AND 연산 결과가 0보다 크면, 형질 1(0001) 또는 형질 3(0100)이 포함되어 있다는 의미.

 

2. GENOTYPE & 2 = 0  → 형질 2를 보유하지 않은 개체 찾기

-GENOTYPE & 2를 수행하면, 형질 2(0010)이 존재하면 2가 나오고, 없으면 0이 나옴.

-GENOTYPE & 2 = 0

→ 즉, 형질 2가 없는 개체만 선택됨.

 

SELECT COUNT(ID) AS COUNT
FROM ECOLI_DATA
WHERE (GENOTYPE & (1|4)) > 0 AND GENOTYPE & 2 = 0 ;