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

Hannana·2025년 5월 22일
0

문제

전제

  • &n 연산 → n자리만 떼어 특별히 그 자리 여부만 파악한다.
1001  & 
0100  
= 0000  

즉, 1외 나머지는 이미 0이기 때문에
& 연산 시, 속하지 않으면 전부 0이 되어 버린다.

결국, GENOTYPE & 4의 결과는 항상 0 또는 4인 것.

풀이

  • 2번 형질을 보유하지 않은 경우 찾기
    => case & 2 = 0

  • 1번 or 3번 형질을 보유한 경우 찾기
    => case & 1 >= 1 or
    case & 4 >= 1

    (해석: 3번 형질 자리엔 10진수 4가 온다.)
    (왜 1 이상인가? 직관적 표현을 위해 1이상으로 표현했으나 =4로 표현해도 상관 없음. 해당 비트가 켜져 있기만 하면(!=0) 조건 만족)

코드

select count(GENOTYPE) as COUNT
from ECOLI_DATA
where GENOTYPE&2=0 and (GENOTYPE&1>=1 or GENOTYPE&4>=1)
;
profile
성장하는 하루를 쌓아가는 블로그

0개의 댓글