KATA#31

codataffee·2024년 5월 12일
0

CODEKATA

목록 보기
31/114
post-thumbnail

WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: Immediate Food Delivery II

✔️ 제출 쿼리

✔️ 쿼리 분석

#  각 고객이 처음 주문한 날짜를 찾기 위해 IN 뒤에 
각 customer_id별로 가장 빠른 order_date를 조회하는 
서브쿼리를 작성하고 조건절에 컬럼 2개를 괄호로 묶어 
해당하는 customer_id와 order_date를 가진 데이터만을 조회
# order_date가 customer_pref_delivery_date와 같은 경우를 
평균내어, 백분율로 소수점 2번째까지 표현
SELECT ROUND(AVG(order_date = customer_pref_delivery_date)*100, 2) immediate_percentage
FROM Delivery
WHERE (customer_id, order_date) IN 
        (
        SELECT customer_id, 
               MIN(order_date) 
        FROM Delivery
        GROUP BY customer_id
        )


- PYTHON


✔️ 문제 #1: 가장 가까운 같은 글자

✔️ 제출 코드

✔️ 코드 분석

def solution(s):
    # sd = {"문자":인덱스}
    sd = {}
    answer = []
    # enumerate(s)를 통해 문자 당 인덱스 반복
    for i, x in enumerate(s):
        # x(문자)가 sd의 key("문자")중에 없으면 answer에 -1 추가
        if x not in sd:
            answer.append(-1)
        # x(문자)가 sd의 key중에 있으면 answer에 
          현재 x(문자)의 i(인덱스)에서 sd에 있는 
          이전 x(문자)의 인덱스를 뺀 값을 answer에 추가
        else:
            answer.append(i - sd[x])
        # 문자 x의 마지막 등장 위치를 현재 인덱스 i로 업데이트
        sd[x] = i
    return answer


✔️ CHECK POINT

  • SQL
    • 문제를 제대로 해석하는데 시간이 더 걸리는 듯ㅋㅋ
    • IN 절에 서브쿼리로 원하는 데이터를 조회하고,
      WHERE 조건절에 컬럼을 괄호로 묶어 해당하는 데이터들만
      조회하는 방법을 배웠다.
  • PYTHON
    • 딕셔너리를 생성하여 키:값들을 조건에 따라 조회, 입력하고
      문자열을 enumerate하여 인덱스를 활용하는 것에 대한
      연습을 할 수 있었다!

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

0개의 댓글

관련 채용 정보