KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT MAX(num) num
FROM (
SELECT num
FROM MyNumbers
GROUP BY num
HAVING COUNT(num) = 1
) a
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT customer_id
FROM Customer
GROUP BY customer_id
HAVING COUNT(distinct product_key) = (SELECT COUNT(product_key) cnt FROM Product)
✔️ 제출 코드
✔️ 코드 분석
def solution(answers):
result = [] # 결과를 담을 리스트
s1 = [1,2,3,4,5] # 학생 1의 찍기 패턴
s2 = [2,1,2,3,2,4,2,5] # 학생 2의 찍기 패턴
s3 = [3,3,1,1,2,2,4,4,5,5] # 학생 3의 찍기 패턴
scores = [0,0,0] # 학생 1,2,3 의 점수를 담을 리스트
for i, answer in enumerate(answers): # answers를 인덱스와 함께 반복
if s1[i % len(s1)] == answer: # i 를 [len(s1); 학생 1의 찍기 패턴 그룹]으로
# 나눈 나머지가 정답과 같을 경우
scores[0] += 1 # 학생 1 (인덱스 0) 점수에 1 추가
if s2[i % len(s2)] == answer: # 같은 방식으로 찍기 패턴 그룹으로 나눠서 정답과 비교
scores[1] += 1 # 학생 2 (인덱스 1) 점수에 1 추가
if s3[i % len(s3)] == answer:
scores[2] += 1 # 학생 3 (인덱스 2) 점수에 1 추가
for i, score in enumerate(scores): # 학생 1,2,3 의 점수 리스트를 인덱스와 함께 반복
if max(scores) == score: # 제일 높은 점수를 가진 학생 (동점 포함) 찾기
result.append(i + 1) # 해당 학생을 결과 리스트에 추가
return result
✔️ 제출 코드
✔️ 코드 분석
def solution(nums):
plus = [] # nums의 합을 담을 리스트
answer = [] # 결과를 담을 리스트
for i in range(len(nums) - 2): # nums 리스트의 첫 번째 숫자부터
# 마지막에서 세 번째 숫자까지 반복
for j in range(i + 1, len(nums) - 1): # 첫 번째 루프의 i 다음 인덱스부터
# 마지막에서 두 번째 숫자까지 반복
for k in range(j + 1, len(nums)): # 두 번째 루프의 j 다음 인덱스부터
# 리스트의 마지막 숫자까지 반복
plus.append(nums[i] + nums[j] + nums[k])
# 각 인덱스의 값을 모두 더해 plus에 추가
for i in plus: # nums
if i > 1:
x = True
for j in range(2, i):
if i % j == 0:
x = False
break
if x:
answer.append(i)
return len(answer)
+)
if
all()
함수를 사용해서 괄호 안의 모든 값이 참일 경우로 필터링 후 i
추가
def solution(nums): plus = [] answer = [] for i in range(len(nums) - 2): for j in range(i + 1, len(nums) - 1): for k in range(j + 1, len(nums)): plus.append(nums[i] + nums[j] + nums[k]) for i in plus: if all(i % j != 0 for j in range(2,i)): answer.append(i) return len(answer)
에라토스테네스의 체