본문 바로가기

파이썬 알고리즘 풀이

29)침몰하는 타이타닉

문제

N명의 승객 몸무게가 주어졌을 때 승객 모두가 탈출하기 위한 구명보트의 최소개수를 출력하는 프로그램을 작성하기

 

조건

유람선에는 N명의 승객이 타고 있습니다.

구명보트를 타고 탈출해야 하는데 타이타닉에 있는 구명보트는 2명 이하로만 탈 수 있 으며, 보트 한 개에 탈 수 있는 총 무게도 M kg 이하로 제한되어 있습니다.

 

제한사항

첫째 줄에 자연수 N(5<=N<=1000)과 M(70<=M<=250)이 주어집니다.

 

두 번째 줄에 N개로 구성된 몸무게 수열이 주어집니다.

 

몸무게는 50이상 150이하입니다. 각 승객의 몸무게는 M을 넘지는 않습니다.

 

즉 탈출을 못하는 경우는 없습니다.

 

첫째 줄에 구명보트의 최소 개수를 출력합니다.

 

과정

1. 오름차순 정렬

2. 가장 무거운 사람+ 가장 가벼운 사람 <=M 이면 둘을 배열에서 빼주고 cnt+=1

 

문제풀이

N, M=map(int, input().split())
a=list(map(int, input().split()))
a.sort()

cnt=0

while a:
  if len(a)==1:
    cnt+=1
    break

  if a[0]+a[-1]>M:
    a.pop()
    cnt+=1
  else:
    a.pop(0)
    a.pop()
    cnt+=1

print(cnt)
from collections import deque

N, M=map(int, input().split())
a=list(map(int, input().split()))
a.sort()
a=deque(a)
cnt=0

while a:
  if len(a)==1:
    cnt+=1
    break
  
  if a[0]+a[-1]<=M:
    cnt+=1
    a.popleft()
    a.pop()
  else:
    cnt+=1
    a.pop()

print(cnt)

'파이썬 알고리즘 풀이' 카테고리의 다른 글

31)역수열  (0) 2021.10.31
30)증가수열 만들기  (0) 2021.10.31
28)창고 정리  (0) 2021.10.27
27)씨름 선수  (0) 2021.10.27
26)회의실 배정  (0) 2021.10.27