KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 코드
✔️ 코드 분석
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 # 최소 종류 수 반환
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