KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
✔️ 제출 코드
✔️ 코드 분석
def solution(order):
n = len(order) # order 배열의 길이(즉, 상자의 개수)를 n에 저장
stack = [] # 보조 컨테이너 벨트 역할을 하는 스택 초기화
idx = 0 # 현재 트럭에 실어야 할 상자의 순서를 추적하는 인덱스 초기화
for box in range(1, n + 1): # 1번 상자부터 n번 상자까지 반복
stack.append(box) # 현재 상자를 스택에 추가
# 스택이 비어있지 않고 스택의 최상단 상자가 현재 순서의 상자와 일치하면
while stack and stack[-1] == order[idx]:
stack.pop() # 스택에서 상자를 꺼내 트럭에 실음
idx += 1 # 다음 실어야 할 상자의 순서로 이동
return idx # 트럭에 실린 상자의 개수를 반환
PYTHON
def solution(order):
n = len(order) # order 배열의 길이(즉, 상자의 개수)를 n에 저장
stack = [] # 보조 컨테이너 벨트 역할을 하는 스택 초기화
idx = 0 # 현재 트럭에 실어야 할 상자의 순서를 추적하는 인덱스 초기화
for box in range(1, n + 1): # 1번 상자부터 n번 상자까지 반복
stack.append(box) # 현재 상자를 스택에 추가
# 스택이 비어있지 않고 스택의 최상단 상자가 현재 순서의 상자와 일치하면
while stack and stack[-1] == order[idx]:
stack.pop() # 스택에서 상자 꺼내기
idx += 1 # 다음 실어야 할 상자의 순서로 이동
return idx # 트럭에 실린 상자의 개수를 반환
상자의 총 개수 저장
n = len(order)
: 주어진 order 배열의 길이(상자의 총 개수)를 변수 n에 저장
보조 컨테이너 벨트 역할을 하는 스택 초기화
stack = [ ]
: 보조 컨테이너 벨트 역할을 하는 스택 초기화
현재 트럭에 실어야 할 상자의 인덱스 초기화
idx = 0
: 현재 트럭에 실어야 할 상자의 순서를 추적하는 인덱스 초기화
1번 상자부터 n번 상자까지 순회
for box in range(1, n + 1)
: 1번 상자부터 n번 상자까지 반복
현재 상자를 스택에 추가
stack.append(box)
: 현재 순회 중인 상자를 스택에 추가
스택에서 상자를 트럭에 실을 수 있는지 확인 및 실어주기
while stack and stack[-1] == order[idx]
:
스택이 비어있지 않고, 스택의 최상단 상자가 현재 실어야 할 상자와 일치하면,
stack.pop()
: 스택에서 상자를 꺼내기
idx += 1
: 다음 실어야 할 상자의 순서로 이동
트럭에 실린 상자의 개수 반환
return idx
: 트럭에 실린 상자의 개수 반환