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

윤민선·2026년 6월 10일

프로그래머스

목록 보기
16/77

문제 설명

ECOLI_DATA 테이블에서 2번 형질을 보유하지 않으면서 1번 또는 3번 형질을 보유하는 대장균의 수를 구하는 문제이다.

테이블주요 컬럼
ECOLI_DATAID, PARENT_ID, SIZE_OF_COLONY, DIFFERENTIATION_DATE, GENOTYPE

접근 방법

형질비트값
1번 형질1 (001)
2번 형질2 (010)
3번 형질4 (100)

GENOTYPE = 13이면 1101이므로 1번, 3번, 4번 형질 보유를 의미한다.

특정 형질을 갖고 있는지 확인할 때는 비트 연산자 &를 사용한다. 연산 결과가 0이면 해당 형질이 없고, 0보다 크면 해당 형질이 있다.

GENOTYPE = 13 (1101) & 2 (0010) = 0  → 2번 형질 없음 ✅
GENOTYPE = 15 (1111) & 2 (0010) = 2  → 2번 형질 있음 ❌

조건을 SQL로 정리하면:

조건SQL
1번 형질 보유GENOTYPE & 1 > 0
3번 형질 보유GENOTYPE & 4 > 0
2번 형질 미보유GENOTYPE & 2 = 0

구체적으로 정리한 풀이 흐름:

  1. COUNT(*)로 조건에 맞는 행 수 집계
  2. GENOTYPE & 1 > 0 OR GENOTYPE & 4 > 0으로 1번 또는 3번 형질 보유 필터
  3. GENOTYPE & 2 = 0으로 2번 형질 미보유 필터

최종 코드

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

0개의 댓글