- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131704
문제 이해
1. 컨베이어 벨트 순서대로 박스를 꺼낸다.
2. 꺼낸 박스가 order에 나온 순서와 같다면 담는다.
3. 만약 꺼낸 박스가 order에 나온 순서와 다르면 보조 컨테이너에 추가한다.
-> 위에 이해한 걸로 컨베이어 벨트와 보조 컨테이너를 따로 계산했는데 로직이 복잡해서 그런가 계속해서 틀렸다
그래서 구글링을 통해 찾은 풀이로 이해해보자면
어차피 컨베이어벨트 순서대로 처리하는 거나 stack에 넣어서 끝에서부터 처리하는 거나 같기때문에 처음부터 모든 숫자를 stack에 추가한 후 그 값들이 order[index]의 값과 같은지 여부에 따라 로직을 수행하면 되는 것 같다.
- 정답 풀이 :
def solution(order):
stacks = []
i = 1 # 현재 컨베이어 벨트에 있는 박스번호
now = 0 # order의 현재 인덱스
while i < len(order) + 1:
stacks.append(i) # 순서대로 박스 추가
while stacks[-1] == order[now]:
now += 1
stacks.pop()
if len(stacks) == 0:
break
i += 1 # 컨베이어 벨트 이동
return now
'프로그래머스 > Level 2' 카테고리의 다른 글
[연습문제 / 프로그래머스] 131130번 : 혼자 놀기의 달인 (0) | 2022.11.13 |
---|---|
[연습문제 / 프로그래머스] 134239번 : 우박수열 정적분 (0) | 2022.11.13 |
[위클리 챌린지 / 프로그래머스] 87377번 : 교점에 별 만들기 (0) | 2022.11.09 |
[kakao / 프로그래머스] 92342번 : 양궁대회 (0) | 2022.11.04 |
[2021 kakao / 프로그래머스] 72412번 : 순위 검색 (0) | 2022.11.03 |