https://school.programmers.co.kr/learn/courses/30/lessons/131704

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


내 풀이

def solution(order):
    temp = []
    i = 1
    now = 0
    
    while i != len(order)+1:
        temp.append(i)
        while temp[-1] == order[now]:
            now += 1
            temp.pop()
            
            if len(temp) == 0:
                break
        i += 1


    return now

처음에 문제가 잘 이해가 안됐다.

[1,2,3,4,5]의 순서로 있는택배를 order에서 요청한 대로 쌓아야하는데, 그게 불가능하다면 최대한으로 가능한 숫자를 리턴한다

그니까 1 2 3 4 5 -> 4 3 1 2 5 의 순서대로 쌓으라는 말이다

4번을 최초로 쌓으라했으니 1 2 3 번 까지 스택구조의 임시컨테이너에 넣어놓고 4번을 택배트럭에 싣는다.

다음 3번을 쌓아야하니 임시컨테이너에서 3번을 꺼낸다(스택구조) 참고로 pop은 리스트에서 젤 뒤에 요소를 삭제하고 그 값을 리턴한다. 

만약에 임시컨테이너에 더 쌓여진게 없으면 모두 택배에 넣어진거니까 break해서 빠져나온다.

 

 


다른사람의 풀이

https://velog.io/@namkun/프로그래머스-lv2-택배상자

 

프로그래머스 lv2 택배상자

택배상자처음에는 for문으로 order를 전부 돌면서 그 안에서 조건을 걸고 찾았었다. 결과는 테스트케이스 10개중에 6개까지 맞고 4개는 시간 초과왜인가 고민좀 해봤는데, 아무래도 for문 돌면서 (

velog.io



 

 

'취준 > 프로그래머스' 카테고리의 다른 글

롤케이크 자르기 - 파이썬  (0) 2022.11.02
2개 이하로 다른 비트 - 파이썬  (0) 2022.10.17
파일명 정렬 - 프로그래머스  (0) 2022.10.11
n^2 배열 자르기 - 파이썬  (0) 2022.10.11
방문 길이 - 파이썬  (1) 2022.10.05

+ Recent posts