KATA#92

codataffee·2024년 7월 15일
0

CODEKATA

목록 보기
92/114
post-thumbnail

WHAT IS KATA?

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

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


- PYTHON


✔️ 문제 #1: 귤 고르기

✔️ 제출 코드

✔️ 코드 분석

def solution(k, tangerine):
    # 귤 크기별 개수를 세기 위한 딕셔너리 생성
    tangerine_count = {}
    
    # tangerine 리스트를 순회하며 각 귤 크기의 개수 세기
    for t in tangerine:
        if t in tangerine_count:  # 이미 해당 크기의 귤이 딕셔너리에 있으면
            tangerine_count[t] += 1  # 개수를 1 증가
        else:  # 해당 크기의 귤이 딕셔너리에 없으면
            tangerine_count[t] = 1  # 새로운 항목으로 추가하고 개수를 1로 설정
    
    # 값만 추출해서 리스트로 변환 후 내림차순 정렬
    count_list = list(tangerine_count.values())  # 딕셔너리의 값(개수)들을 리스트로 변환
    count_list.sort(reverse=True)  # 리스트 내림차순 정렬
    
    total = 0  # 현재까지 선택한 귤의 총 개수
    variety_count = 0  # 선택한 귤의 종류 수
    
    # 정렬된 개수를 하나씩 더해가며 k개 이상이 되는지 확인
    for count in count_list:
        total += count  # 현재 개수를 총 개수에 더함
        variety_count += 1  # 종류 수를 1 증가
        if total >= k:  # 총 개수가 k 이상이면
            break  # 반복문 종료
    
    return variety_count  # 최소 종류 수 반환


✔️ CHECK POINT

  • PYTHON

  • dict (딕셔너리) : 각 귤의 크기를 키(key)로, 해당 크기의 개수를 값(value)으로 저장하는데 사용

    # 딕셔너리 초기화
    tangerine_count = {}
    
    # 딕셔너리에 값 추가
    tangerine_count[1] = 1  # {1: 1}
    tangerine_count[3] = 2  # {1: 1, 3: 2}
    
    # 값 업데이트
    tangerine_count[1] += 1  # {1: 2, 3: 2}
  • list (리스트) : 딕셔너리의 값을 리스트로 변환하고 내림차순으로 정렬

    # 리스트 초기화
    count_list = [2, 2, 2, 1, 1]
    
    # 리스트 정렬
    count_list.sort(reverse=True)  # 내림차순 정렬
    print(count_list)  # [2, 2, 2, 1, 1]
    
  • 반복문을 통한 최소 종류 선택 : 정렬된 리스트에서 개수를 누적하여 k개 이상이 되는지 확인

    total = 0
    variety_count = 0
    for count in count_list:
        total += count
        variety_count += 1
        if total >= k:
            break
    

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

0개의 댓글

관련 채용 정보