nan + nan = 2nan

[프로그래머스/SELECT] 조건에 맞는 개발자 찾기 본문

Database/SQL

[프로그래머스/SELECT] 조건에 맞는 개발자 찾기

2nan 2024. 4. 1. 23:49
728x90


코드 입력

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE SKILL_CODE & (SELECT CODE
                   FROM SKILLCODES
                   WHERE NAME = "Python")
OR SKILL_CODE & (SELECT CODE
                  FROM SKILLCODES
                  WHERE NAME = "C#")
ORDER BY ID;

 

해당 문제는 모르겠어서 구글에 찾아본 문제 중 하나다.

SQL을 통해 문자열을 1과 0이 연속된 비트열로 변환하여 조회하는 방법을 몰랐다.

Skill_Code 열의 비트를 사용해서 각 Python과 C# 스택을 가진 개발자를 찾는다.
이 때, & (비트)연산자를 이용하는데, 비트 연산자가 무엇인지 정확히 이해가 되지 않는다.

Python의 경우, 이진수로 표현하면 256 (2의 8승)으로 표현되고
C#의 경우, 이진수로 표현하면 2(2의 1승)으로 표현이 된다.

SKILLCODES 테이블에서 & 연산자 및 where 절에서 or 를 사용하여 각각 Python 혹은 C# 스킬을 가진 사람을 구한다.

근데 이해가 되지 않는 부분은, 
예를 들어 아래 이미지에서 162번을 보면 code 값이 8452이다.

이는 세 가지 스택의 이진수 값을 합한 값인데, 여기서 & 연산자를 사용하면
Python 포함 여부를 알 수 있는지에 대해서는 제대로 모르겠다.

해당 부분은 제대로 다시 찾아봐야겠다.


출처 : 프로그래머스

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

 

프로그래머스

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

programmers.co.kr

 

Comments