본문 바로가기

SQL

(MySQL) - 프로그래머스(코딩테스트 연습 - SELECT): 특정 형질을 가지는 대장균 찾기

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/301646

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

bit masking을 사용해본 문제였습니다.

📕 풀이방법

📔 풀이과정

특정 집합의 포함 여부는 &연산으로 확인 가능합니다.

 

1. 1번 형질과 3번 형질은 각각 오른쪽에서 첫 번째와 세 번째 bit가 존재하는지 확인하면 됩니다. 이는  각각 genotype & 1, genotype & 4함으로써 포함여부 알 수 있습니다.

 

2. 2번 형질은 오른쪽에서 두 번째 bit가 0인지 여부로 비포함임을 알 수 있습니다.

📔 정답 출력 | 반환

오른쪽에 두 번째 bit는 포함하지 않으면서 첫 번째 혹은 세 번째 bit는 포함하는 genotype에 관련한 id를 count한 결과를 select해줍니다.


📕 Code

📔 MySQL

SELECT count(id) as COUNT 
FROM ECOLI_DATA
WHERE (genotype & 2) = 0 AND (
    (genotype & 1) <> 0 OR
    (genotype & 4) <> 0
);

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.