KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT activity_date `day`,
COUNT(DISTINCT user_id) active_users
FROM Activity
WHERE DATEDIFF('2019-07-27', activity_date) BETWEEN 0 AND 29
GROUP BY activity_date
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT product_id,
`year` first_year,
quantity,
price
FROM Sales
WHERE (product_id, `year`)
IN (
SELECT product_id,
MIN(`year`)
FROM Sales
GROUP BY product_id
)
✔️ 제출 코드
✔️ 코드 분석
def solution(k, score):
answer = [] # 매일 발표된 명예의 전당의 최하위 점수를 저장할 리스트
kscore = [] # 현재 날짜까지의 k개의 점수 리스트
for i in score:
kscore.append(i) # 현재 날짜의 점수를 kscore 에 추가
kscore.sort(reverse = True) # 내림차순으로 정렬
# kscore 리스트의 길이가 k보다 크면 마지막 점수(가장 낮은 점수) 제거
if len(kscore) > k:
kscore.pop()
# 매일 명예의 전당에 추가되는 최하위 점수를 answer에 추가
answer.append(kscore[-1])
return answer
from heapq import * def solution(k, score): answer = [] q = [] for s in score: heappush(q, s) # 점수를 힙에 추가 if len(q) > k: p = heappop(q) # 힙에서 가장 작은 요소를 제거 answer.append(min(q)) # 현재 힙의 가장 작은 요소를 answer에 추가 else: answer.append(min(q)) # k개 미만일 때도 현재 힙의 가장 작은 요소를 answer에 추가 return answer k = 5 score = [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] solution(k, score)
✔️ 제출 코드
✔️ 코드 분석
def solution(a, b):
d = [31,29,31,30,31,30,31,31,30,31,30,31] # 월별 일수 저장 리스트
w = ['FRI',"SAT",'SUN','MON',"TUE",'WED','THU'] # 주별 요일 저장 리스트
t = 0 # 1월 1일부터 a월 b일 까지의 일수 차이
answer = ''
if a == 1: # a가 1월일 때
t = b % 7 # b일을 7로 나눈 나머지를 t로 저장
answer = w[t - 1] # 1월 1일 금요일로부터 시작해서 t 번째 요일 출력
else :
for i in range(a - 1) : # a월 직전까지 반복
t += d[i] # a월 직전 달까지의 일수 더하기
t += b # b일 더하기
t %= 7 # 전체 일수를 7로 나눈 나머지
answer = w[t - 1]
return answer
import datetime def solution(a, b): # datetime 객체를 생성하여 주어진 월, 일에 해당하는 날짜 입력 d = datetime.datetime(2016, a, b).strftime("%A") # strftime 메서드를 사용하여 해당 날짜의 요일을 문자열로 반환 # "%A"는 전체 요일 이름을 나타내는 포맷 코드 d = d.upper() # 문자열을 대문자로 변환 return d[0:3] # 요일의 첫 세 글자를 반환 a = 5 b = 22 solution(a,b)
heapq
모듈.pop()
: 맨 마지막 원소를 리턴하고 해당 값은 삭제하는 메서드if len(kscore) > k: kscore.pop()
을 하면,datetime
모듈