WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: 오프라인/온라인 판매 데이터 통합하기

✔️ 제출 쿼리

✔️ 쿼리 분석

WITH MARCH AS 
(
SELECT SALES_DATE,
       PRODUCT_ID,
       USER_ID,
       SALES_AMOUNT
FROM ONLINE_SALE

UNION ALL

SELECT SALES_DATE,
       PRODUCT_ID,
       NULL USER_ID,
       SALES_AMOUNT
FROM OFFLINE_SALE
)

    
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE,
       PRODUCT_ID,
       USER_ID,
       SALES_AMOUNT
FROM MARCH
WHERE MONTH(SALES_DATE) = 3
ORDER BY 1, 2, 3


✔️ 문제 #2: 조건에 부합하는 중고거래 댓글 조회하기

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT UB.TITLE,
       UR.BOARD_ID,
       UR.REPLY_ID,
       UR.WRITER_ID,
       UR.CONTENTS,
       DATE_FORMAT(UR.CREATED_DATE,"%Y-%m-%d") CREATED_DATE
FROM USED_GOODS_BOARD UB JOIN USED_GOODS_REPLY UR
     ON UB.BOARD_ID = UR.BOARD_ID
WHERE DATE_FORMAT(UB.CREATED_DATE,"%Y-%m") = "2022-10"
ORDER BY CREATED_DATE, UB.TITLE


✔️ 문제 #3: 입양 시각 구하기(2)

✔️ 제출 쿼리

✔️ 쿼리 분석

WITH RECURSIVE TEST AS 
  (
  SELECT 0 AS HOUR # 비재귀
  
  UNION ALL

  SELECT HOUR + 1  # 재귀
  FROM TEST 
  WHERE HOUR < 23  # 재귀 정지 조건
  )

SELECT T.HOUR HOUR,
       COALESCE(A.`COUNT`,0) `COUNT`
FROM TEST T LEFT JOIN (
                        SELECT HOUR(DATETIME) HOUR,
                               COUNT(*) `COUNT`
                        FROM ANIMAL_OUTS
                        GROUP BY HOUR(DATETIME)
                        ) A
     ON T.HOUR = A.HOUR


- PYTHON


✔️ 문제 #1: 음양 더하기

✔️ 제출 코드

✔️ 코드 분석

def solution(absolutes, signs):
    answer = 0                          # 0부터 시작하는 answer 변수 정의
    for i, s in zip(absolutes, signs):  # 변수 2개를 zip함수로 묶어 각각 부여하기
        if s == True:                   # s (signs) 값이 True 일 경우
            answer += i                 # i를 더한 값을 answer에 반영
        else:                           # 그렇지 않을 경우(False)
            answer -= i                 # i를 뺀 값을 answer에 반영
    return answer


✔️ 문제 #2: 핸드폰 번호 가리기

✔️ 제출 코드

✔️ 코드 분석

def solution(phone_number):
    replace = '*' * (len(phone_number) - 4)  # 맨 뒷 4자리만 필요하기 때문에 
                                             # phone_number의 길이에서 4를 뺀 값만큼 * 만들기
    num = phone_number[-4:]                  # 슬라이싱으로 뒤에서부터 4개 가져오기
    return replace + num                     # * 과 숫자 4개 합쳐서 반환


✔️ 문제 #3: 없는 숫자 더하기

✔️ 제출 코드

✔️ 코드 분석

def solution(numbers):
    sume = sum(i for i in range(0,10))   # 0부터 9까지 숫자의 합
    sumn = sum(numbers)                  # numbers 숫자들의 합
    answer = sume - sumn                 # 전체 합에서 numbers 숫자들의 합 빼기
    return answer


✔️ CHECK POINT


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

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN