목차
1. 문제 설명
2. 정답
1. 문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/301646
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

해당 문제의 핵심 조건은 2번 형질을 보유하지 않으면서 1번이나 3번 형질을 보유해야 한다는 것이다.
먼저 형질은 비트마스크 방식으로 저장됨을 알아야 한다.
비트마스크 방식
각 형질을 하나의 비트로 표현하는 방식이다.
- 1번 형질 = 0001₂ (1)
- 2번 형질 = 0010₂ (2)
- 3번 형질 = 0100₂ (4)
- 4번 형질 = 1000₂ (8)
즉 각 형질은 해당하는 비트 자리(2의 거듭제곱)로 표현된다.
따라서 예시의 GENOTYPE을 봤을 때
- ID 1: 8 → 1000₂ → 4번 형질
- ID 2: 15 → 1111₂ → 1, 2, 3, 4번 형질
- ID 3: 1 → 0001₂ → 1번 형질
- ID 4: 13 → 1101₂ → 1, 3, 4번 형질
즉, 3번 형질이 있으면 GENOTYPE 값의 3번째 비트(4)가 켜져 있는 것이다.
그래서 3을 2진수로 변환한 11₂와는 다르게, 🔑 3번 형질은 100₂(4)로 표현된다!!
2. 정답
-- 2번 형질 보유 X + 1번이나 3번 형질을 보유
SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA
WHERE GENOTYPE & 2 = 0
AND (GENOTYPE & 1 != 0 OR GENOTYPE & 4 != 0);
위에서 언급했듯이 3번 형질을 보유한 경우 3번째 비트가 켜져 있으므로 100₂(4)와 & 연산해야 한다.
'Problem Solving > Programmers' 카테고리의 다른 글
[SQL] 멸종위기의 대장균 찾기 문제 풀이 (0) | 2025.03.07 |
---|---|
[SQL] 대장균들의 자식의 수 구하기 문제 풀이 (2) | 2025.03.05 |
목차
1. 문제 설명
2. 정답
1. 문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/301646
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

해당 문제의 핵심 조건은 2번 형질을 보유하지 않으면서 1번이나 3번 형질을 보유해야 한다는 것이다.
먼저 형질은 비트마스크 방식으로 저장됨을 알아야 한다.
비트마스크 방식
각 형질을 하나의 비트로 표현하는 방식이다.
- 1번 형질 = 0001₂ (1)
- 2번 형질 = 0010₂ (2)
- 3번 형질 = 0100₂ (4)
- 4번 형질 = 1000₂ (8)
즉 각 형질은 해당하는 비트 자리(2의 거듭제곱)로 표현된다.
따라서 예시의 GENOTYPE을 봤을 때
- ID 1: 8 → 1000₂ → 4번 형질
- ID 2: 15 → 1111₂ → 1, 2, 3, 4번 형질
- ID 3: 1 → 0001₂ → 1번 형질
- ID 4: 13 → 1101₂ → 1, 3, 4번 형질
즉, 3번 형질이 있으면 GENOTYPE 값의 3번째 비트(4)가 켜져 있는 것이다.
그래서 3을 2진수로 변환한 11₂와는 다르게, 🔑 3번 형질은 100₂(4)로 표현된다!!
2. 정답
-- 2번 형질 보유 X + 1번이나 3번 형질을 보유
SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA
WHERE GENOTYPE & 2 = 0
AND (GENOTYPE & 1 != 0 OR GENOTYPE & 4 != 0);
위에서 언급했듯이 3번 형질을 보유한 경우 3번째 비트가 켜져 있으므로 100₂(4)와 & 연산해야 한다.
'Problem Solving > Programmers' 카테고리의 다른 글
[SQL] 멸종위기의 대장균 찾기 문제 풀이 (0) | 2025.03.07 |
---|---|
[SQL] 대장균들의 자식의 수 구하기 문제 풀이 (2) | 2025.03.05 |