KATA#40

codataffee·2024년 5월 22일
0

CODEKATA

목록 보기
40/114
post-thumbnail

WHAT IS KATA?

KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.

이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.


- SQL


✔️ 문제 #1: Count Salary Categories

✔️ 제출 쿼리

✔️ 쿼리 분석

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


✔️ 문제 #2: Employees Whose Manager Left the Company

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT employee_id
FROM Employees e1
WHERE manager_id NOT IN (
    SELECT employee_id
    FROM Employees)
    AND salary < 30000
ORDER BY 1


- PYTHON


✔️ 문제 #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))


✔️ 문제 #2: 체육복

✔️ 제출 코드

✔️ 코드 분석

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


✔️ CHECK POINT

  • PYTHON
    • set() 함수를 활용해서 교집합으로 겹치는 값 찾기 !

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글

관련 채용 정보