KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT e.name,
b.bonus
FROM Employee e left join Bonus b
ON e.empId = b.empId
WHERE b.bonus < 1000 OR b.bonus IS NULL
✔️ 제출 쿼리
✔️ 쿼리 분석
WITH SSB AS(
SELECT s.student_id sid,
s.student_name sn,
sb.subject_name sbn
FROM Students s JOIN Subjects sb
ON 1 = 1
),
EC AS(
SELECT student_id,
subject_name,
COUNT(subject_name) csn
FROM Examinations
GROUP BY student_id, subject_name
)
SELECT SSB.sid student_id,
SSB.sn student_name,
SSB.sbn subject_name,
COALESCE(EC.csn,0) attended_exams
FROM SSB LEFT JOIN EC
ON SSB.sid = EC.student_id AND SSB.sbn = EC.subject_name
ORDER BY 1, 3
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT E1.name
FROM Employee E1, Employee E2
WHERE E2.managerId = E1.id
GROUP BY E2.managerId
HAVING COUNT(*) >= 5
✔️ 제출 코드
✔️ 코드 분석
def solution(s):
s = s.split(' ') # s문자열을 공백을 기준으로 단어로 분리
answer = [] # 최종 결과를 저장할 리스트
for word in s: # 각 단어에 대해 반복
ss = '' # 변환된 단어를 저장할 변수
for x, y in enumerate(word): # 단어 내 문자(y)에 대해 인덱스(x)와 함께 반복
if x % 2 == 0: # 인덱스(x)가 짝수이면
ss += y.upper() # 해당 문자(y)를 대문자로 ss 변수에 추가
else: # 인덱스(x)가 홀수이면
ss += y.lower() # 해당 문자(y)를 소문자로 ss 변수에 추가
answer.append(ss) # answer 리스트에 ss 문자 변수 추가
return ' '.join(answer) # join 메서드로 answer 리스트 내 문자를
공백으로 구분하여 합치기
✔️ 제출 코드
✔️ 코드 분석
def solution(number):
result = 0 # 삼총사의 합이 0인 개수를 담을 변수
for x in range(len(number)-2): # 서로 다른 수 3개의 조합에 대한 루프
for y in range(x+1, len(number)-1):
for z in range(y+1, len(number)):
if number[x] + number[y] + number[z] == 0:
result += 1 # 서로 다른 3개의 수 합이 0인 경우 result에 1씩 더하기
return result
+)
# itertools 를 활용한 조합 계산하는 방법
해당 내용은 아직 정확하게 이해하지 못했다.
정리를 통해 복습하기!
from itertools import combinations
def solution(number):
return sum(not sum(c) for c in combinations(number, 3))
✔️ 제출 코드
✔️ 코드 분석
def solution(t, p):
answer = 0 # 정답을 담을 변수 초기화
for i in range(len(t) - len(p) + 1): # t 문자열의 길이에서 p 문자열의 길이를 뺀 만큼동안 i 부여
tp = t[i:i+len(p)] # 슬라이싱: t 문자열의 i 번째부터 (i + p 문자열의 길이) 만큼 잘라오기
if tp <= p: # p 문자열의 길이만큼 잘라온 t 문자열의 숫자가 p 문자열의 숫자보다 작거나 같을 때
answer += 1 # 정답 변수에 1 추가
return answer