KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT DISTINCT product_id,
10 price
FROM Products
WHERE product_id NOT IN(
SELECT DISTINCT product_id
FROM Products
WHERE change_date <= '2019-08-16'
)
UNION
SELECT product_id,
new_price price
FROM Products
WHERE (product_id,change_date) IN (
SELECT product_id,
MAX(change_date) `date`
FROM Products
WHERE change_date <= '2019-08-16'
GROUP BY product_id
)
✔️ 제출 쿼리
✔️ 쿼리 분석
WITH board AS (
SELECT turn Turn,
person_id ID,
person_name Name,
weight Weight,
SUM(weight) OVER(ORDER BY turn) sumweight
FROM Queue
)
SELECT board.Name person_name
FROM board
WHERE board.sumweight <= 1000
ORDER BY board.sumweight DESC
LIMIT 1
✔️ 제출 코드
✔️ 코드 분석
def solution(babbling):
# can 리스트에 허용된 문자열들인 "aya", "ye", "woo", "ma" 포함
can = ["aya", "ye", "woo", "ma"]
# 조건을 만족하는 문자열의 개수를 세기 위해 초기값을 0으로 설정
result = 0
for i in babbling:
#문자열 i가 can 리스트에 직접 포함되어 있다면, result를 1 증가
if i in can:
result += 1
#문자열 i가 can 리스트에 직접 포함되어 있지 않으면, 문자열을 구성하는 부분 문자열을 확인
else:
# comp1과 comp2는 현재 확인 중인 부분 문자열과 이전에 확인된 부분 문자열을 저장
comp1 = ''
comp2 = ''
for j in i:
# comp1에 문자를 추가
comp1 += j
# 만약 comp1이 comp2와 다르고 comp1이 can 리스트에 포함되어 있으면
if comp1 != comp2 and comp1 in can:
# comp2에 comp1을 저장하고, comp1을 초기화
comp2 = comp1
comp1 = ''
# 전체 문자열을 확인한 후 comp1이 빈 문자열이면,
# 조건을 만족한다고 판단하여 result를 1 증가
if comp1 == '':
result += 1
return result