[프로그래머스 파이썬] 구명보트

일단 해볼게·2023년 2월 9일
0

프로그래머스

목록 보기
21/106

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

def solution(people, limit):
    answer = 0
    
    people.sort() # 정렬
    
    start, end = 0, len(people) - 1
    
    while start <= end:
        answer += 1 # if문 충족 여부와 상관없이 +1
        if people[start] + people[end] <= limit:
            start += 1
        end -= 1
    
    return answer

if문을 충족하면 start, end를 건드려 배열 길이가 2만큼 줄어들고 answer은 1 증가한다.
if문을 충족하지 않으면 end만 건드렬 배열 길이가 1만큼 줄어들고 answer은 1 증가한다.
-> if문에 상관없이 answer은 1씩 증가한다.

투 포인터를 이용해 시간을 줄였다.

테케는 맞았지만 실패한 풀이 (런타임 에러)

def solution(people, limit):
    answer = 0
    people.sort() 
    for i in range(len(people)):
        for j in range(1, len(people)):
            if i >= j:
                continue
            elif people[i] + people[-j] <= limit:
                people.pop(i)
                people.pop(-j)
                answer += 1
        
    return answer + len(people)

deque를 이용했으면 정답이지 않았을까?

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글