SQL
프로그래머스 SQL (SELECT) 특정 형질을 가지는 대장균 찾기
종식당
2024. 7. 9. 18:17
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/301646
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 설명
GENOTYPE을 2진수로 먼저 나타낸 다음 거기서 어떠한 형질을 가지고 있는지 먼저 파악한다.
만약에 13을 2진수로 나타낸다면 1101인데 가장 오른쪽 부터 형질이 1씩 증가한다. 따라서 이는 1번 형질, 3번 형질, 4번 형질을 가지고 있다고 보면 된다. - 제출 코드
SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA
WHERE GENOTYPE & 2 = 0 AND (GENOTYPE & 1 > 0 OR GENOTYPE & 4 > 0)
문제에서 2번 형질을 가지고 있지 않고 1번이나 3번 형질을 가지고 있는 개체의 수를 출력하라 했으니 2진수로 나타냈을 때 오른쪽에서 첫 번째나 세 번째 자리가 1이고 두 번째 자리가 0인 경우를 찾으면 된다.
SQL에서 비트 연산자는 처음 써봤는데 이전에 비트 연산자를 썼던 거랑 똑같이 쓰면 된다.
첫번째 자리는 십진수로 1, 두 번째 자리는 십진수로 2, 세 번째 자리는 십진수로 4이므로 이들을 &연산자를 이용해 경우를 처리해 주면 된다. 그리고 다음 코드도 가능하다.
SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA
WHERE (GENOTYPE & 1 OR GENOTYPE & 4) AND !(GENOTYPE & 2)
728x90
반응형