KATA#94

codataffee·2024년 7월 17일
0

CODEKATA

목록 보기
94/114
post-thumbnail

WHAT IS KATA?

KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.

이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.


- SQL


프로그래머스에서 SQL 문제 풀기

✔️ 문제 #1: FrontEnd 개발자 찾기

✔️ 제출 쿼리

✔️ 쿼리 분석

# 개발자의 ID, 이메일, 이름, 성 선택
SELECT D.ID
     , D.EMAIL
     , D.FIRST_NAME
     , D.LAST_NAME
# SKILLCODES 테이블과 DEVELOPERS 테이블 조인
# 조인 조건 : S.CODE와 D.SKILL_CODE의 비트 AND 연산 결과가 S.CODE와 동일
FROM SKILLCODES S 
     JOIN DEVELOPERS D ON (S.CODE & D.SKILL_CODE) = S.CODE
# Front End 스킬을 가진 개발자만 선택
WHERE S.CATEGORY = 'Front End'
# ID, 이메일, 이름, 성으로 그룹화하여 중복 제거
GROUP BY 1,2,3,4
# ID 기준 오름차순 정렬
ORDER BY 1


✔️ CHECK POINT

  • SQL

    • 비트 AND 연산 & :
      두 개의 숫자의 각 비트를 비교하여 두 비트가 모두 1일 때만 1이 되는 연산

    • 비트 AND 연산의 원리
      입력된 두 숫자의 각 비트를 논리적 AND 연산을 수행하여 새로운 숫자 생성

      # 비트 AND 연산은 다음과 같은 규칙을 따른다 :
      1 AND 1 = 1
      1 AND 0 = 0
      0 AND 1 = 0
      0 AND 0 = 0
    • 예시 (10 과 12 의 AND 연산)

       # 10과 12의 이진수 표현:
       10 (십진수) = 1010 (이진수)
       12 (십진수) = 1100 (이진수)
      
       # 비트 AND 연산 수행:
       1010  (10의 이진수)
       1100  (12의 이진수)
       ----
       1000  (결과 이진수) = 8
       
       따라서 1012AND 연산 결과는 8 이다.
      
    • 문제 적용

      # SKILLCODES 테이블과 DEVELOPERS 테이블 조인
      # 조인 조건 : S.CODE와 D.SKILL_CODE의 비트 AND 연산 결과가 S.CODE와 동일
        FROM SKILLCODES S 
        JOIN DEVELOPERS D ON (S.CODE & D.SKILL_CODE) = S.CODE
        
      # 예를 들어 어떤 개발자의 SKILL_CODE가 400 (=b'110010000')이라면, 
      # 이는 SKILLCODES 테이블에서 CODE가 
      # 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000') 에 
      # 해당하는 스킬을 가졌다는 것을 의미
      
      400 AND 256, 128, 16 :
      
      110010000  (400)
      ---------
      100000000  (256)
      010000000  (128)
      000010000  (16)
      
      400 에는 256, 128, 16 이 모두 포함된다고 볼 수 있다.

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글

관련 채용 정보