연습장

[mysql] 부모의 형질을 모두 가지는 대장균 찾기 본문

프로그래머스/2단계

[mysql] 부모의 형질을 모두 가지는 대장균 찾기

js0616 2024. 7. 3. 07:12

CONV(100, 10, 2) 

10진수의 100을 2진수로 표기하는 함수

 

select A.ID as ID, CONV(A.GENOTYPE,10,2) , CONV(B.GENOTYPE,10,2) from ECOLI_DATA A left join ECOLI_DATA B on A.PARENT_ID = B.ID
order by A.ID ; 

 

 

A 가 B의 형질을 모두가지는걸 어떻게 비교해야될지 고민해 봤는데

 

반복문을 써야하나..? 

 

형질을 가지고있다는건 1이라는뜻이고

 

둘다 같은 형질을 가진다는 의미는 같은 위치에 1이 존재한다는거니까

 

두개를 그냥 뺴봤다. 

 

 

다음과 같이 부모의 형질을 모두 가지는 경우 1 과 0 으로만 표기되고 문자열의 길이(자릿수)도 변화가 없는것을 알 수 있다.

 

예외 상황

 

자식 : 110

부모 : 1 

 

빼더라도 109 자릿수 변화없음 

-> 따라서 9를 가지지 않는걸로 변경

-> 1가지 테스트에서 실패 

 

 

 

예외 상황

 

부모의 형질이 10 이고 자식이 0 이거나 1 이라면  -10 , -9 등이 나오며

문제의 요구 조건상 자식의 형질이 최소 부모보다 크거나 같아야 하다고 판단하여 

and 조건을 추가 

 

 

결론 

 

select A.ID as ID, A.GENOTYPE as GENOTYPE , B.GENOTYPE as PARENT_GENOTYPE
from ECOLI_DATA A join ECOLI_DATA B on A.PARENT_ID = B.ID
where Locate(9, (CONV(A.GENOTYPE,10,2) - CONV(B.GENOTYPE,10,2))) = 0
and A.GENOTYPE >= B.GENOTYPE 
order by A.ID asc; 

 

 

 

'프로그래머스 > 2단계' 카테고리의 다른 글

멀리뛰기  (0) 2024.08.09
점프와 순간이동  (0) 2024.05.20
짝지어 제거하기  (0) 2024.05.19
카펫  (0) 2024.04.30
피보나치 수  (0) 2024.04.30