https://school.programmers.co.kr/learn/courses/30/lessons/276035#
간만에 코테 풀다보니 멍청해져서 문제 이해하는데만 한 세월 걸렸다 🤪
문제 예시
SKILL_CODES
DEVELOPERS
원하는 출력
📌 풀이 )
처음에 아무생각없이 CODE와 SKILL_CODE 조인문제인줄알고 레벨4인데 왤케 쉽지? 했다가 피봤다
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
각각의 코드를 이진수로 바꾼 SKILL_CODE에서 1인 것이 스킬을 가지고 있다는 것이고, 그 1이 무엇인지 CODE를 이진수로 바꾸어서 하나씩 추가하는 형식이다.
말이 좀 어려운데
2진수로 바꾼 SKILL_CODE가 110010000 이라면,
2진수가 100000000, 010000000, 000010000 의 스킬을 가지고 있다는 것을 의미한다.
그리고 각각의 스킬들 중에 Front End 스킬 카테고리에 해당하는 값을 가지고 있는 개발자의 정보를 출력해야한다.
이번엔 비트연산자를 사용하였다.
& 연산자인데, 두 값 모두 1 일때에만 1로 출력되고, 아니면 0으로 출력된다.
즉
110010000 & 100000000 을 진행하면 100000000 이 나온다는 것이다.
만약
110010000 & 001000000 을 진행하면 000000000 이 나온다.
둘다 1이여야 1이 나온다!
이를 활용하면, SKILL_CODE를 CODE와 비교하여 CODE 그대로 나오게 되면 해당 값을 가지고 있다는 의미이다.
그 다음부터는 간단하다. category가 프론트인 값을 중복없이(DISTINCT) 개발자 정보를 출력해주면 된다.
SELECT DISTINCT d.ID, d.EMAIL, d.FIRST_NAME, d.LAST_NAME
FROM DEVELOPERS d
JOIN SKILLCODES s ON (d.SKILL_CODE & s.CODE) = s.CODE
WHERE s.CATEGORY = 'Front End'
ORDER BY d.ID;
'코테 공부 🔥' 카테고리의 다른 글
[백준/파이썬] 1358: 하키 (0) | 2024.05.27 |
---|---|
[프로그래머스/SQL] 우유와 요거트가 담긴 장바구니 (0) | 2024.05.11 |
[프로그래머스/SQL] 조건에 맞는 아이템들의 가격의 총합 구하기 (0) | 2024.05.09 |
[프로그래머스/SQL] Python 개발자 찾기 (0) | 2024.05.09 |
[백준/파이썬] 3020: 개똥벌레 (1) | 2023.05.18 |
댓글