코딩테스트 with PYTHON
[python] 코딩테스트 대비 - 그리디(시뮬레이션 - 조건에 따른 최소 갯수)
탱이나라
2022. 1. 28. 01:03
문제)
답안코드)
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 |