본문 바로가기

Algorithm/프로그래머스

프로그래머스 구명보트 C++

반응형

프로그래머스 : 구명보트

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


- 문제

  한 구명보트에 최대 두명만 탈 수 있을 때 구명보트를 최소한으로 사용해서 모두 탈출할 수 있는 경우를 구하는 문제다.

 


- 풀이

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

using namespace std;

int solution(vector<int> people, int limit) {
    int answer = 0, current = 0, idxF = 0, idxB = people.size() - 1;
    
    sort(people.begin(),people.end());
    
    while(idxF <= idxB){
        if(people[idxF] + people[idxB] <= limit){
            idxF++;
            idxB--;
        }
        else{
            idxB--;
        }
        answer++;
    }
    return answer;
}

 

 

구명보트에 최대 두명이 탈 수 있다는 걸 생각하면 된다.

 

음..... 무조건 가장 큰 수랑 가장 작은수 합치는 게 맞을까? 생각을 더 해봐야할 것 같다.

당연히 테스트 케이스 열몇개 중에서 한 개는 틀렸다고 나올 줄 알았는데 다 맞았다고 나오네...

 

  


- 기억할 것!

 X

반응형