본문 바로가기

개발 관련 기타/알고리즘

[프로그래머스] (C++) 구명 보트

문제

 

코딩테스트 연습 - 구명보트 | 프로그래머스

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모

programmers.co.kr

힌트

  • 최대 2명 (한 명을 임의로 택했을 때 다른 한 명은 누구를 태우면 가장 좋을까?)

소스 코드 (첫번째 시도)

// [프로그래머스] 구명 보트

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

int solution(vector<int> people, int limit) {
  int answer = 0;
  std::sort(people.begin(), people.end());
  while (!people.empty()) {
    if((people[0] + people.back() <= limit) && (people.size() != 1)) people.erase(people.begin());
    people.pop_back();
    answer++;
  }
  return answer;
}
  • 채점 결과 (90.0 / 100.0)
    • 정확성 (75.0 / 75.0)
    • 효율성 (15.0 / 25.0)