문제

DEVELOPERS 테이블에서 Front End 스킬을 가진 개발자의 정보를 조회하려 합니다. 조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요. 결과는 ID를 기준으로 오름차순 정렬해 주세요.

 

 

풀이

비트 연산자를 활용해 해결 가능하다.

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE SKILL_CODE & (SELECT SUM(CODE) FROM SKILLCODES WHERE CATEGORY = "Front End")
-- skillcodes 테이블에서 front end 카테고리에 해당하는 code의 합계와 developers 테이블의 skill_code 값을 &비트연산자로 계산
ORDER BY ID

 

결과값

 

계산 과정

WHERE SKILL_CODE & (SELECT SUM(CODE) FROM SKILLCODES WHERE CATEGORY = "Front End")

WHERE절을 살펴보자.

SKILLCODES 테이블의 Front End에 해당하는 모든 code 값을 합산하면 10256(10100000010000)이 도출된다.

 

각 개발자의 code를 이진수로 변환해보자.

  • Carsen의 code는 2048 > 100000000000
  • Cade의 code는 8452 > 10000100000100
  • Jerami의 code는 400 > 110010000

각각의 값을 10256의 이진수 값 &연산해준다.

 

Carsen

10100000010000

00100000000000

-----------------------

00100000000000 > 2048로, React를 다룰 줄 아는 Frontend 개발자이다.

 

Cade

10100000010000

10000100000100

-----------------------

10000000000000 > 8192로, Vue를 다룰 줄 아는 Frontend 개발자이다.

 

Jerami

10100000010000

00000110010000

-----------------------

00000000010000 > 16로, JavaScript를 다룰 줄 아는 Frontend 개발자이다.

 

 

가끔 코딩테스트를 보면 비트연산자를 활용한 문제 풀이가 나오기도 한다. 이해하면 금방 적용할 수 있는 쉬운 내용이니 복습 한 번 더 하고 정리해야겠다.

+ Recent posts