프로그래머스 2단계 "구명 보트"

sanha_OvO·2021년 7월 5일
0

Algorithm

목록 보기
73/84

문제

프로그래머스 '구명 보트'


첫번째 풀이

people을 정렬한 후 people에서 보트에 타지 않은 무게가 가장 낮은 사람과
무게 합이 limit이하인 사람중 가장 limit에 가까운 사람을 조합하여야 한다.


첫번째 Python 코드

def solution(people, limit):
  answer = 0
  people.sort(reverse = True)
  while people:
    k = people.pop()
    for i in range(len(people)):
      if k + people[i] <= limit:
        people.pop(i)
        break
    answer += 1

  return answer

두번째 풀이

다만 위 풀이처럼 리스트와 pop()을 이용할 시 효율성테스트에서 탈락하게 된다.
이에 근본적인 문제해결법은 같지만 인덱스를 기준으로 풀이를 진행하면 더욱 빠르게 문제를 해결 할 수 있다.


두번째 Python 코드

def solution(people, limit):
  answer = 0
  people.sort()
  i, j = 0, len(people)-1
  while i <= j:
    if people[i] + people[j] <= limit:
      i += 1
    j-=1
    answer += 1

  return answer
profile
Web Developer / Composer

0개의 댓글