스터디/코딩테스트

python 코딩테스트 - 프로그래머스 구명보트

공대생철이 2023. 11. 17. 14:59
728x90

출처 : 프로그래머스

처음 든 생각

- 정렬을 한 뒤에 큐나 스택 자료구조를 사용하면 되겠다.

 

자료구조 선택 이후 그 다음 계산로직만 구현하면 된다고 판단해서 바로 코드를 작성했다.

 

나의 답

from collections import deque

def solution(people, limit):
    answer = 0
    q= deque(sorted(people))
    
    while q:
        if len(q) == 1:
            q.popleft()
            answer += 1
            break
        if q[0] + q[-1] > limit:
            q.pop()
            answer += 1
        else:
            q.popleft()
            q.pop()
            answer += 1

    return answer

큐 자료구조를 사용했고 길이가 1인 특수 케이스에 대해서 따로 처리를 한 후 최솟값과 최댓값을 짝을 지어 limit와 비교하도록 하였다.

 

로직 자체는 그렇게 어렵지 않으나 처음에 스택으로 풀었을 때 어마어마한 뻘짓을 했다.

구명 보트에 2명만 탑승 가능하다는 사실을 놓치고 limit에 될 때까지 더해주는 방식으로 코드를 작성했었다.

 

제발 문제를 잘 읽자.

728x90