09009
[프로그래머스 lv2] 택배 상자 본문
문제 보기
https://school.programmers.co.kr/learn/courses/30/lessons/131704
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 해결
문제가 너무 길어서 풀기부터 곤란했다. 심지어 문제 설명도 제대로 이해하지도 못했다.
from collections import deque
import heapq as hq
def solution(order):
answer = 0
first_belt = []
second_belt = []
original_order = [i for i in range(1, len(order)+1)]
for i in range(len(order)):
# order 순서와 원래 순서가 맞지 않을 경우 보조 벨트에 넣는다
if order[i] != original_order[i]:
second_belt.append(order[i])
else:
first_belt.append(order[i])
second_belt.sort(reverse=True)
first_belt.sort()
second_belt = deque(second_belt)
first_belt = deque(first_belt)
for i in range(len(order)):
if order[i] == second_belt[0]:
second_belt.popleft()
answer += 1
elif order[i] == first_belt[0]:
first_belt.popleft()
answer += 1
else:
break
return answer
테스트 케이스는 맞았으나 완전히 틀림..
근데 다른 사람 풀이를 보면 너무 간단하게 답이 나와서 허무했다.
소스 코드
- 다른 사람 풀이
index 순서대로 컨테이너에 상자를 싣고 order에 있는 처음 원소와 같으면 1 증가시키고 컨테이너에 박스를 빼준다.
def solution(order):
container = []
i = 1
cnt = 0
while i != len(order)+1:
container.append(i)
while container and container[-1] == order[cnt]:
cnt += 1
container.pop()
i += 1
return cnt
'Algorithm' 카테고리의 다른 글
[프로그래머스 lv1] 키패드 누르기 (0) | 2023.10.10 |
---|---|
[프로그래머스 lv1] 둘만의 암호 (0) | 2023.10.10 |
[프로그래머스 lv1] 대충 만든 자판 (0) | 2023.10.09 |
[프로그래머스 lv1] 문자열 나누기 (0) | 2023.10.09 |
[프로그래머스 lv1] 체육복 (0) | 2023.10.09 |
Comments