본문 바로가기
코테 공부 🔥

[프로그래머스/SQL] FrontEnd 개발자 찾기

by 서니서닝 2024. 5. 9.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/276035#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

간만에 코테 풀다보니 멍청해져서 문제 이해하는데만 한 세월 걸렸다 🤪

 

문제 예시

SKILL_CODES

DEVELOPERS

원하는 출력

 

 

📌 풀이 )

 

처음에 아무생각없이 CODESKILL_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;
728x90

댓글