-
프로그래머스 Level2 - 구명보트 C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 4. 8. 20:37반응형
#include <string> #include <vector> #include <algorithm> using namespace std; int solution(vector<int> people, int limit) { int answer = 0, count = 0; sort(people.begin(), people.end()); // people.size() > count // count가 가벼운 사람들 중 탄 사람 수인데 size==count가 된다면 // 사람들이 이미 다 탔다는 이야기가 된다. while(people.size() > count){ int big = people.back(); people.pop_back(); // 제일 몸무게가 큰 사람이랑 작은 사람이 탈 수 있다면 if(people[count] + big <= limit){ count++; // 다음 사람이 대기 answer++; } else answer++; } return answer; }
정렬만 되어 있다면 정말 쉬운 문제라 sort함수를 이용해 정렬한 후 몸무게가 큰 사람부터 보트에 넣었습니다. 여기서 생각해볼 건
1. 몸무게가 큰 사람을 태우고 나서 보트의 남은 용량이 있지 않겠냐? ( 위 코드상에서 limit - big )
- 그러면 남은 용량을 이용해서 남은 사람들 중 몸무게가 작은 사람을 넣어보면 절약하지 않겠나?
2. 1에서 몸무게가 작은 사람을 넣었따는걸 체크해야 할 변수가 필요하다 ( 위 코드상에서 count )
2가지 정도인 것 같습니다. 다른 사람들의 코드들을 보니 변수명이나 루프문들 형식이 다를 뿐 비슷한 개념을 사용하고 있었습니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 Level3 - 정수 삼각형, C++ (0) 2021.04.26 프로그래머스 Level 2 - 가장 큰 수 C++ (0) 2021.04.10 프로그래머스 Level 1 - 체육복 C++ (0) 2021.04.07 프로그래머스 Level2 - 타겟 넘버 C++ (0) 2021.04.06 프로그래머스 Level2 - 주식가격 C++ (0) 2021.04.05