Programmers 구명보트 Level 2 - python

유형석·2022년 9월 2일
0

python/Algorithm

목록 보기
6/9
post-thumbnail

📝 Programmers 구명보트

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

🧲 문제 해석

🔍처음 보트에 2명까지밖에 타지 못 한다는 조건을 못 보고 골치아파서 여러 조건을 주면서 풀다가 2명 까지의 조건을 보고 탄식을 했다.
🔍보트 인원이 최대 2명으로 제한되면 난이도가 내려가지만 없어진다면 40kg 40kg 40kg 40kg 40kg 40kg 6명이 최대 보트 240kg에 탈 수 있기 때문.
정렬 후 del, remove를 쓰면 시간 복잡도 초과 날 것이 분명했기 때문에 보트에 혼자 타는 사람을 센 후 나머지 사람을 새 리스트에 넣어 계산하려 했지만
아니였으니 바로 패스...📚

if people[i] + 40 > limit:
	cnt += 1

이런 식으로

🧲 코드

🔍 정렬까지는 생각했고 2명을 태우니 앞뒤로 빼면 된다는 생각으로 deque 사용

from collections import deque

def solution(people, limit):
    cnt = 0
    people = sorted(people)
    temp = deque(people)
    
    while temp:
        if len(temp) >= 2:
            if temp[-1] + 40 > limit:
                cnt += 1
                temp.pop()
                continue
            if temp[-1] + temp[0] > limit:
                cnt += 1
                temp.pop()
            elif temp[-1] + temp[0] <= limit:
                cnt += 1
                temp.pop()
                temp.popleft()
        else:
            if temp[0] <= limit:
                temp.pop()
                cnt += 1
    
    return cnt

💡 팁?

🔍 조금이라도 시간을 줄이기 위해

		if len(temp) >= 2:
            if temp[-1] + 40 > limit:
                cnt += 1
                temp.pop()
                continue

처음 생각했던 코드를 추가해주니 조금은 시간이 줄었다

profile
Carrot_hyeong

0개의 댓글