KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
# 삼각형의 조건 : 두 변의 길이의 합이 나머지 한 변의 길이보다 크다.
# 초등학교 때 배웠던 건가.. 기억 안날 뻔
SELECT x, y, z,
CASE WHEN (x + y > z) AND (y + z > x) AND (z + x > y) THEN "Yes"
ELSE "No" END triangle
FROM Triangle
✔️ 제출 쿼리
✔️ 쿼리 분석
# 3개의 연속적인 값을 비교하기 위해 셀프조인을 3번까지 넣어봤다.
# 조건절을 AND 로 4번이나 묶었지만 성능이 크게 떨어지지는 않은 듯 했다.
# 데이터가 많으면 CTE로 한번 정리하고 조회하는 방법도 있을 듯 !
SELECT DISTINCT l1.num ConsecutiveNums
FROM Logs l1, Logs l2, Logs l3
WHERE l3.id - l2.id = 1
AND l2.id - l1.id = 1
AND l1.num = l2.num
AND l2.num = l3.num
✔️ 제출 코드
✔️ 코드 분석
def solution(lottos, win_nums):
# 당첨 순위를 딕셔너리로 생성
rankings = {
6 : 1,
5 : 2,
4 : 3,
3 : 4,
2 : 5,
1 : 6,
0 : 6
}
# 당첨숫자 count, 알아볼 수 없는 수 luck
count = 0
luck = 0
result = []
for i in lottos:
if i in win_nums:
count += 1
elif i == 0:
luck += 1
# 알아볼 수 없는 수가 당첨이라면 최대 당첨 순위는 count + luck
# 알아볼 수 없는 수가 당첨이 아니라면 최소 당첨 순위는 count
return [rankings[count + luck], rankings[count]]