KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT "Low Salary" category,
SUM(IF(income<20000,1,0)) accounts_count
FROM Accounts
UNION
SELECT "Average Salary" category,
SUM(IF(income>=20000 and income<=50000,1,0)) accounts_count
FROM Accounts
UNION
SELECT "High Salary" category,
SUM(IF(income>50000,1,0)) accounts_count
FROM Accounts
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT employee_id
FROM Employees e1
WHERE manager_id NOT IN (
SELECT employee_id
FROM Employees)
AND salary < 30000
ORDER BY 1
✔️ 제출 코드
✔️ 코드 분석
def solution(X, Y):
# set 함수의 교집합으로 공통된 숫자 XY 생성
XY = set(X) & set(Y)
if not XY:
return "-1"
elif len(XY) == 1 and "0" in XY:
return "0"
# 각 공통된 숫자를 X와 Y에 존재하는 갯수 중 더 작은 수만큼 반복하여 문자열 생성
answer = [i * min(X.count(i), Y.count(i)) for i in XY]
# 각 문자열을 공백없이 붙이고 내림차순 정렬하여 반환
return "".join(sorted(answer, reverse = True))
✔️ 제출 코드
✔️ 코드 분석
def solution(n, lost, reserve):
# 여벌이 있는 학생이 도난당한 경우
s1 = set(lost) & set(reserve)
# s1과 겹치는 수 제거, 앞번호부터 비교하기 위해 정렬
lost = sorted(list(filter(lambda x : x not in s1, lost)))
reserve = sorted(list(filter(lambda x : x not in s1, reserve)))
# 도난당한 학생들의 번호에 -1, +1 비교하여 여벌있는 학생들 리스트에서 제거
for i in lost:
if (i-1) in reserve:
reserve.remove(i-1)
elif (i+1) in reserve:
reserve.remove(i+1)
# 여벌있는 학생들이 도난당한 학생들에게 빌려주지 못할 경우
# 해당 도난 학생은 수업 참여 불가, 전체 학생 n 에서 1씩 빼주기
else:
n -= 1
return n
set()
함수를 활용해서 교집합으로 겹치는 값 찾기 !