KATA#90

codataffee·2024년 7월 13일
0

CODEKATA

목록 보기
90/114
post-thumbnail

WHAT IS KATA?

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

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


- PYTHON


✔️ 문제 #1: 큰 수 만들기

✔️ 제출 코드

✔️ 코드 분석

def solution(number, k):
    answer = []  # 현재까지의 가장 큰 숫자를 저장할 리스트
    for num in number:
        # answer가 비어있지 않고, 현재 숫자가 answer의 마지막 숫자보다 크며, 제거할 수 있는 숫자가 남아있을 때
        while answer and answer[-1] < num and k > 0:
            answer.pop()  # answer의 마지막 숫자를 제거
            k -= 1  # 제거할 숫자 개수 감소
        answer.append(num)  # 현재 숫자를 answer에 추가

    # 모든 숫자를 순회한 후에도 제거할 숫자가 남아있다면, answer의 뒤에서부터 제거
    if k > 0:
        answer = answer[:-k]

    return ''.join(answer)  # answer에 남아있는 숫자들을 문자열로 합쳐서 결과 반환


✔️ CHECK POINT

  • PYTHON

    def solution(number, k):
       answer = []  # 정답 숫자 저장 리스트
       for num in number:
           # answer가 비어있지 않고, 현재 숫자가 answer의 마지막 숫자보다 크며, 제거할 수 있는 숫자가 남아있을 때
           while answer and answer[-1] < num and k > 0:
               answer.pop()  # answer의 마지막 숫자를 제거
               k -= 1  # 제거할 숫자 개수 감소
           answer.append(num)  # 현재 숫자를 answer에 추가
    
       # 모든 숫자를 순회한 후에도 제거할 숫자가 남아있다면, answer의 뒤에서부터 제거
       if k > 0:
           answer = answer[:-k]
    
       return ''.join(answer)  # answer에 남아있는 숫자들을 문자열로 합쳐서 결과 반환
    
    • 리스트 생성: answer 리스트 생성

    • 숫자 순회: number 문자열을 하나씩 각 숫자 num으로 반복

    • 반복 조건:

      • answer가 비어있지 않고 (True),
        num이 answer의 마지막 숫자보다 크고,
        아직 제거해야 할 숫자(k)가 남아있는 동안 반복

      • answer의 마지막 숫자 제거 answer.pop()

      • 제거할 숫자(k) 개수 하나 줄이기 k -= 1

      • 현재 숫자 num을 answer에 추가 answer.append(num)

    • 남은 제거:
      모든 숫자를 다 순회했는데도 k가 남아있다면, 그만큼 answer의 뒤에서부터 숫자 제거

    • 결과 생성:
      answer에 남아있는 숫자들을 문자열로 합쳐 결과 반환 return ''.join(answer)


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

0개의 댓글

관련 채용 정보