자두의 데브로그

[MySQL] 프로그래머스 특정 형질을 가지는 대장균 찾기 본문

코딩테스트/SQL

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

왕자두 2024. 10. 10. 17:56

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제 정말.. 사람을 헷갈리게 만드는데 뭐 있네 .. 

1, 2, 3, 4번 형질이 도대체 어떤 수를 의미하는지 모르겠어서 진짜 오랫동안 고민했는데

 

0001

0010

0100

1000

 

이게 각각 1-4번 형질이란다....

이것만 알고 나면 쉽게 풀 수 있는데 

-- 코드를 작성해주세요
select COUNT(*) as COUNT
from ECOLI_DATA
where (GENOTYPE & 2 = 0) and ((GENOTYPE & 1 = 1) or (GENOTYPE & 4 = 4));

 

genotype & 2 = 2 면 2를 포함하고 있는 거고,

genotype & 2 = 0 이면 2를 포함하고 있지 않기 때문에 2를 포함하지 않게 2와 & 했을 때 0을 같는 행을 찾고, 1 또는 3번 형질을 가져야 한다고 했으니까 0001 즉, 1과 0100 즉, 4의 값과 비교하고 or 연산으로 묶으면 된다.

대신 or의 경우, and 보다 먼저 계산해야 하기 때문에 괄호로 묶어줘야 맞는 답을 출력할 수 있다!