Lv2 - 조건에 맞는 개발자 찾기

2025. 7. 30. 19:26·CODING TEST/MySQL

📌 문제 정보

- 문제 이름 : 프로그래머스 - (SELECT) 조건에 맞는 개발자 찾기

- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/276034

 

 

 

📌 문제 요약

- SKILLCODES 테이블 : NAME, CATEGORY, CODE (스킬의 코드는 2진수 표현 시 각 bit로 구분될 수 있게 2의 제곱수로 구성)

- DEVELOPERS 테이블 : ID, FIRST_NAME, LAST_NAME, EMAIL, SKILL_CODE (컬럼 INTEGER, 2진수 표현 시 각 bit는 SKILLCODES 테이블의 코드를 의미)

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

 

예시)

NAME  CATEGORY  CODE
C++ Back End 4
JavaScript Front End 16
Java Back End 128
Python Back End 256
C# Back End 1024
React Front End 2048
Vue Front End 8192
Node.js Back End 16384

 

ID  FIRST_NAME  LAST_NAME  EMAIL  SKILL_CODE
D165 Jerami Edwards jerami_edwards@grepp.co 400
D161 Carsen Garza carsen_garza@grepp.co 2048
D164 Kelly Grant kelly_grant@grepp.co 1024
D163 Luka Cory luka_cory@grepp.co 16384
D162 Cade Cunningham cade_cunningham@grepp.co 8452

 

출력)

ID  EMAIL  FIRST_NAME  LAST_NAME
D162 cade_cunningham@grepp.co Cade Cunningham
D164 kelly_grant@grepp.co Kelly Grant
D165 jerami_edwards@grepp.co Jerami Edwards

 

 

 

📌 내 풀이 및 코드

SELECT d.ID, d.EMAIL, d.FIRST_NAME, d.LAST_NAME
FROM DEVELOPERS d
WHERE EXISTS (
    SELECT 1
    FROM SKILLCODES s
    WHERE (d.SKILL_CODE & s.CODE) > 0
      AND s.NAME IN ('Python', 'C#')
)
ORDER BY d.ID ASC;

- 처음 조건문을 쓸 때는 WHERE s.NAME = 'Python' OR s.NAME = 'C#' 이런 식으로 썼었는데, DEVELOPERS 테이블에 s.NAME 컬럼이 없고 SKILL_CODE라는 숫자 한 개만 있기 때문에, SKILLCODES 테이블과 연결이 필요했음.

- JOIN SKILLCODES s ON (d.SKILL_CODE & s.CODE) > 0 이렇게 써야 개발자의 SKILL_CODE 숫자 안에 s.CODE가 들어있는지 확인할 수 있는데, 이렇게 쓰면 같은 개발자가 두 줄 이상 나올 수 있기 때문에 정답은 1명인데 2명이 된 것처럼 보여서 오답.

- SELECT 1 : 어떤 값이 있는지만 보고 값 자체는 쓰지 않음. 1 대신 *, 9999, 'banana' 이런식으로 써도 다 가능함.

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** EXISTS 연산 **

- 이 안에 무언가 존재하면 TRUE, 없으면 FALSE라고 판단하는 조건문.

- 있냐 없냐만 판단하기 때문에 중복없이 조건 만족 여부만 확인할 때 매우 깔끔함.

WHERE EXISTS ( SELECT ... FROM ... WHERE ... )

'CODING TEST > MySQL' 카테고리의 다른 글

Lv2 - 노션별 평균 역 사이 거리 조회하기  (0) 2025.08.01
Lv2 - 조건에 맞는 사원 정보 조회하기  (0) 2025.08.01
Lv2 - 업그레이드 된 아이템 구하기  (0) 2025.07.30
Lv2 - 자동차 평균 대여 기간 구하기  (0) 2025.07.29
Lv2 - ROOT 아이템 구하기  (0) 2025.07.29
'CODING TEST/MySQL' 카테고리의 다른 글
  • Lv2 - 노션별 평균 역 사이 거리 조회하기
  • Lv2 - 조건에 맞는 사원 정보 조회하기
  • Lv2 - 업그레이드 된 아이템 구하기
  • Lv2 - 자동차 평균 대여 기간 구하기
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    토익 스피킹
    우리fisa
    클라우드서비스개발
    AWS Certified Cloud Practitioner
    CLF-C02
    프로젝트 리팩토링
    baekjoon
    회고록
    우리 fisa
    백준
    회고
    프로그래머스
    우리fis아카데미
    SQL
    toeic speaking
    AWS Certification
    COS Pro
    Programmers
    java
    감행
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
Lv2 - 조건에 맞는 개발자 찾기
상단으로

티스토리툴바