Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 호텔 방 배정
- Python
- 튜플
- 보행자 천국
- 트라이 #trie #알고리즘
- Spring Boot
- 트라이
- 프로그래머스
- 징검다리 건너기
- 알고리즘
- bulk update
- 불량 사용자
- pycon
- jdbc
- 티스토리
- Open API
- 티스토리 open api
- 크레인 인형뽑기 게임
- 가사 검색
- trie
- Tistory
- CleanCode
- 카카오 인턴
Archives
- Today
- Total
택시짱의 개발 노트
[프로그래머스] 구명보트 본문
링크
https://programmers.co.kr/learn/courses/30/lessons/42885
풀이
모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 구하는 문제이다.
먼저 구명보트를 효율적으로 이용하여 사람을 구출하는 방법을 생각해야 되는데
효율적인 방법은 구명보트가 수용 가능한 무게에 최대한 가깝게 사람을 태우면 된다.
어떻게 해야 효율적인 무게를 찾을 수 있을까
저는 사람들의 무게를 오름차순으로 정렬을 하고
무게가 가장 작은 사람과 무게가 가장 큰 사람을 함께 보트에 태울 수 있는지를 확인하였습니다.
무게가 가장 큰 사람과 무게가 가장 작은 사람과 함께 보트를 탈 수 없다면 무게가 가장 큰사람은
무조건 혼자 탈 수밖에 없습니다.
이걸 이용하여 둘이 같이 탈 수 있다면 둘이 한 보트를 태우게 하고
만약에 같이 못 탄다면 무게가 큰 사람만 혼자 보트를 타도록 하였습니다.
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<string>
#include<set>
#include<map>
#include<cstring>
#include<functional>
#include<cmath>
#include<stack>
#define SIZE 1010
const int INF = 2000000000;
using namespace std;
typedef long long int ll;
typedef pair<int, int> pii;
int solution(vector<int> people, int limit) {
sort(people.begin(), people.end());
int left = 0, right = people.size() - 1;
int answer = 0;
while (left <= right) {
if (left == right) {
answer++;
break;
}
if (people[left] + people[right] <= limit) {
answer++;
left++; right--;
}
else {
answer++;
right--;
}
}
return answer;
}
궁금하신 거나 잘못된 점이 있다면 과감히 댓글 남겨주세요 ㅎ
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 순위 (0) | 2020.04.14 |
---|---|
[SW Expert] 5521. 상원이의 생일파티 (0) | 2020.04.07 |
[프로그래머스] 징검다리 건너기 (0) | 2020.04.01 |
[프로그래머스] 호텔 방 배정 (0) | 2020.04.01 |
[프로그래머스] 불량 사용자 (2) | 2020.04.01 |
Comments