프로그래머스
[프로그래머스]택배 상자
진철
2023. 2. 11. 23:12
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131704
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드를 작성하기 위한 순서는 다음과 같다.
1. 박스 순서대로 스택인 벨트에 집어넣어서 order와 같다면 pop을 해준다.
2. belt의 최근 값과 order의 첫번째 값이 같다면 belt와 order의 값이 다를 때까지 반복문을 진행하고 belt의 모든 값을 pop해서 belt의 길이가 0이면 반복문을 종료한다.
def solution(order):
answer = 0
belt=[] #가장 뒤의 값을 빼주기 위해서 자료구조 stack을 사용한다.
box=1
index=0
while box!=len(order)+1: #1, 2, 3, 4 순서대로 box를 집어넣기 위한 반복문이다.
belt.append(box)
while belt[-1]==order[index]: #2번
answer+=1
index+=1
belt.pop()
if len(belt)==0:
break
box+=1
return answer
n의 갯수가 백만 이하여서 이중 for문을 사용하지 않고 해결해야는 문제였다.
if문 형태의 while문을 사용하여 값이 다를 경우에 빠르게 탈출하는 코드를 작성하여 문제를 해결할 수 있었다.
while문은 조건이 맞는 경우에만 반복한다는 특징을 가지고 있다.
또한 'while (조건)'에서 조건 부분에 참이어야 반복문을 시작하기 때문에 if문처럼 사용하면 시간복잡도가 줄어들 듯하다.
(사실 이를 떠올리는 데 시간이 많이 걸리긴 했습니다. 간단할 줄 알았는데 아직 연습이 더 필요해보이네요.)
728x90
반응형