✅ 문제
https://school.programmers.co.kr/learn/courses/30/lessons/276035
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
✅ 코드
SELECT
D.ID,
D.EMAIL,
D.FIRST_NAME,
D.LAST_NAME
FROM
DEVELOPERS AS D
WHERE
EXISTS (
SELECT 1 FROM
SKILLCODES S
WHERE (D.SKILL_CODE & S.CODE) != 0
AND S.CATEGORY = 'Front End'
)
ORDER BY D.ID
;
✏️ 공부한점
일단 바로 뇌정지가 왔다 비트 연산자에대해서 잘 모르고있었고

해당 연산자를 사용해야겠다는 생각조차 안들었다.
그래서 찾아보면서 했는데도 잘 이해가 안갈수도있어서 예시를 들어보면서 이해했다.
🎯 한 개발자의 skill_code가 2048인 경우
- 이 개발자의 skill_code는 2048 → 이진수: 1000 0000 0000
- React의 CODE도 2048 → 이진수: 1000 0000 0000
비트 AND(&) 연산은 둘 다 1인 비트만 1이 됩니다.
1000 0000 0000 (2048, 개발자의 skill_code)
&
1000 0000 0000 (2048, React 코드)
--------------
1000 0000 0000 → 결과: 2048 (≠ 0) → React를 보유함!
반대로: JavaScript(16)와 AND 해보면?
1000 0000 0000 (2048, 개발자의 skill_code)
&
0000 0001 0000 (16, JavaScript 코드)
--------------
0000 0000 0000 → 결과: 0 → JavaScript는 없음!
이런식으로 skill_code랑 비교를해서 비트연산자로 해당 기술을 갖고있는지 알수 있다. 그러면다면
우리가 구하고자하는건 FrontEnd기술이기때문에
AND S.CATEGORY = 'Front End' 이조건을 넣어줘서
Frontend기술자만 구해올수있다.
핵심은
SELECT 2048 & 2048; -- 결과: 2048
SELECT 2048 & 16; -- 결과: 0
해당 내용을 알고있어야된다 비트연산자로 비교가 가능하다 !
'Algorithm' 카테고리의 다른 글
| [JAVA 알고리즘] 폰켓몬 (5) | 2025.08.07 |
|---|---|
| [알고리즘] 기본 정렬 알고리즘 (Sorting Algorithms) (4) | 2025.08.06 |
| [SQL 알고리즘] 프로그래머스 -대장균들의 자식의 수 구하기 (3) | 2025.07.29 |
| [SQL 알고리즘] SolvedSql - 배송 예정일 예측 성공과 실패 (1) | 2025.06.02 |
| [SQL 알고리즘] SolvedSql - 지역별 주문의 특징 (0) | 2025.05.31 |