Road to Data Scientist

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

코딩 테스트/SQL

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

ShazelP 2024. 5. 31. 16:12

특정 형질을 가지는 대장균 찾기

 

ECOLI_DATA 테이블

- ID: 대장균 개체의 ID

- PARENT_ID: 부모 개체의 ID (최초 대장균 개체의 PARENT_ID 는 NULL 값)

- SIZE_OF_COLONY: 개체의 크기

- DIFFERENTIATION_DATE: 분화되어 나온 날짜

- GENOTYPE: 개체의 형질

 

문제

2번 형질이 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체의 수(COUNT)를 출력하는 SQL 문을 작성해주세요. 1번과 3번 형질을 모두 보유하고 있는 경우도 1번이나 3번 형질을 보유하고 있는 경우에 포함합니다.

 

추가 정보

 

정답 예시

 

코드

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

 

설명

1. ECOLI_DATA 에서 조건에 맞는 개수를 찾기 위해 COUNT(*) 사용

2. 조건을 표현하기 위해 알아야 할 점

2-1. 형질 이진수로 되어 있음

2-2. 비트 연산자 사용 필요

2-3. 2번 형질 보유하지 않음 : !(2&GENOTYPE)

2-4. 1번이나 3번 형질 보유: ((1&GENOTYPE) OR (4&GENOTYPE))

 

+ 비트연산자

- 이진수: 1번 형질 = 2의 0승 = 1 / 2번 형질 = 2의 1승 = 2 / 3번 형질 = 2의 2승 =4

- & : 갖고 있음

- ! : 아님

 

출처

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

 

프로그래머스

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

programmers.co.kr