문제)
답안코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import sys
from collections import deque
#sys.stdin=open("input.txt", "r")
n, limit=map(int, input().split())
p=list(map(int, input().split()))
p.sort()#몸무게 정렬
p=deque(p)#리스트를 deque 자료구조로 변경
#deque를 사용하는 이유는 list.pop(0)를 하면 #제거된 맨 자료 뒤에 있는 모든 원소들이 한칸씩 당겨지는 연산을 하기 때문 #deque는 가르키는 포인터가 존재해서 포인터만 이동함.(효율적) cnt=0#보트 수
while p:#p가 비어있지 않다면 반복
if len(p)==1:#혼자 남았다면
cnt+=1#탈출 and 보트 수 증가
break
if p[0]+p[-1]>limit:#제한 몸무게 보다 크다면,
p.pop()#무거운 한명만 탈출
cnt+=1#보트 수 증가
else:#제한 몸무게 보다 작다면,
p.popleft()#가벼운 사람 탈출
p.pop()#무거운 사람 탈출
cnt+=1#보트 수 증가
print(cnt)
|
cs |
'코딩테스트 with PYTHON' 카테고리의 다른 글
[python] 코딩테스트 대비 - 그리디(역수열) (0) | 2022.01.28 |
---|---|
[python] 코딩테스트 - 그리디(증가수열) (0) | 2022.01.28 |
[python] 코딩테스트 대비 - 그리디(시뮬레이션-높이 맞추기) (0) | 2022.01.28 |
[python] 코딩테스트 대비 - 그리디 (조건 정렬) (0) | 2022.01.28 |
[python] 코딩테스트 대비 - 그리디 알고리즘(정해진 시간 최대 배치) (0) | 2022.01.28 |