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
'스터디 > 코딩테스트' 카테고리의 다른 글
python 코딩테스트 - 2022 카카오 인턴 기출 2번 (1) | 2023.11.24 |
---|---|
python 코딩 테스트 - 카카오 2022 인턴 기출 1번 (1) | 2023.11.23 |
python 코딩테스트 - 프로그래머스 전력망을 둘로 나누기 (0) | 2023.11.16 |
python 코딩테스트 - 프로그래머스 할인 행사 (1) | 2023.11.14 |
python 코딩테스트 - 프로그래머스 행렬의 곱셈 (0) | 2023.11.14 |