KATA#34

codataffee·2024년 5월 15일
0

CODEKATA

목록 보기
34/114
post-thumbnail

WHAT IS KATA?

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

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


- SQL


✔️ 문제 #1: Classes More Than 5 Students

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT class
FROM Courses
GROUP BY class
HAVING COUNT(class) >= 5


✔️ 문제 #2: Find Followers Count

✔️ 제출 쿼리

✔️ 쿼리 분석

SELECT user_id,
       COUNT(follower_id) followers_count
FROM Followers
GROUP BY user_id
ORDER BY 1


- PYTHON


✔️ 문제 #1: 카드 뭉치

✔️ 제출 코드

✔️ 코드 분석

def solution(cards1, cards2, goal):
    for i in goal:
        if cards1 and i == cards1[0]:
            del cards1[0]
    	# goal의 현재 요소 i 가 cards1의 첫 번째 요소와 같은 경우, 
        # cards1의 첫 번째 요소를 삭제
        elif cards2 and i == cards2[0]:
            del cards2[0]
        # goal의 현재 요소 i 가 cards2의 첫 번째 요소와 같은 경우, 
        # cards2의 첫 번째 요소를 삭제
        else:
            return "No"
            # goal 리스트의 모든 요소가 cards 1, 2 에 없으면,
            # "No" 반환
    return "Yes"
    # goal 리스트의 모든 요소가 조건을 만족하면, "Yes" 반환


✔️ 문제 #2: 과일 장수

✔️ 제출 코드

✔️ 코드 분석

def solution(k, m, score):
    answer = 0
    score.sort(reverse = True)
    # 점수 목록을 내림차순으로 정렬
    for i in range(len(score)//m):
    # score 리스트를 m의 크기만큼의 그룹으로 나누어 반복
        box = score[m * i : m * (i + 1)]
        # score 리스트를 m의 크기에 따라 그룹화 = box 세트화
        answer += box[-1] * m
        # 각 box의 마지막 요소(box[-1])에 m을 곱하여 answer에 더하기
        # 각 box에서 가장 낮은 점수를 상자당 사과의 갯수(m)만큼 곱한다는 의미 
        # (최저 사과 점수) x (한 상자에 담긴 사과 개수) x (상자의 개수:반복)
    return answer


✔️ CHECK POINT

  • box = score[m * i : m * (i + 1)] :
    리스트 값들을 반복문을 활용해 (i) 원하는 크기(m)의 그룹(인덱싱)을 만드는 방법!

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

0개의 댓글

관련 채용 정보