728x90
반응형
문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/301647
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 핵심
- A는 B를 포함하는가 판단 > 비트연산(&) 사용하기
- ex) A는 1011(2) 갖으며 B는 1000(2)을 갖는다. A는 B를 포함하는가? A & B = 1000 = B
- A & B = B 이면 B가 A에 포함된다는 의미다.
- 틀린풀이 틀린 이유
- CONV(컬럼명, 변경 전 진법, 변경 후 진법) → CONV(13, 10, 2) = 1101(2)인데 SQL에서는 이를 이진수으로 인지하지 않는다.
- 1101(일천 일백 일) & 101 (일백 일) 로 인지해서 & 하면 69가 나온다.
- 따라서 CONV 쓸 때, CONV의 결과값이 10진수로 인식된다는거 알아두자
2. 코드(MySQL)
-- 코드를 작성해주세요
with tmp as (
select C.ID, C.GENOTYPE as C_TYPE, P.GENOTYPE as P_TYPE
from ECOLI_DATA as C
left join ECOLI_DATA as P on C.PARENT_ID = P.ID
)
-- A가 B에 포함되는가 판단 > 비트연산(&) 활용하기
select ID, C_TYPE as GENOTYPE, P_TYPE as PARENT_GENOTYPE
from tmp
where C_TYPE & P_TYPE = P_TYPE
order by ID asc;
- 틀린 풀이
with tmp as (
select C.ID, conv(C.GENOTYPE, 10, 2) as C_TYPE, conv(P.GENOTYPE, 10, 2) as P_TYPE
from ECOLI_DATA as C
left join ECOLI_DATA as P on C.PARENT_ID = P.ID
)
-- A가 B에 포함되는가 판단 > 비트연산(&) 활용하기
select ID, C_TYPE, P_TYPE, conv(C_TYPE, 2, 10) as GENOTYPE, conv(P_TYPE, 2, 10) as PARENT_GENOTYPE
, C_TYPE & P_TYPE as RN
from tmp
order by ID asc;
728x90
반응형
'PS > SQL' 카테고리의 다른 글
[프로그래머스] 특정 세대의 대장균 찾기 (2) | 2024.05.02 |
---|---|
[프로그래머스] 대장균의 크기에 따라 분류하기 2 (0) | 2024.05.02 |
[프로그래머스] 대장균들의 자식의 수 구하기 (1) | 2024.05.01 |
[프로그래머스] 특정 형질을 가지는 대장균 찾기 (0) | 2024.04.30 |
[HackerRank] Weather Observation Station 13 (0) | 2024.04.24 |