KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
# 각 고객이 처음 주문한 날짜를 찾기 위해 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
)
✔️ 제출 코드
✔️ 코드 분석
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