처리순서
풀이
처음에는 people배열을 받아서 sort로 낮은수부터 높은수까지 정렬 오름차순 정렬을 해서 가장작은값부터 순서대로 넣었는데 가장 작은 값과 가장큰값을 비교해서 넣어줘야 최소한의 구명보트를 조합할 수 있다.
가장 큰값과 가장 작은 값을 더해서 받은 limit보다 작거나 같다면 보트에 실어 보낼 수 있다. 그렇지 않다면 다음값인 70과 가장 작은 값 50을 똑같이 더해본다. 만약 처음부터 둘의 합이 조건에 만족한다면 그안쪽으로 한칸씩 이동시켜 안에 두번째로 가장큰 값과 두번째로 가장 작은값을 비교하게 된다.
이 문제는 어떻게 최소한의 구명보트수를 계산할 것인가를 통해 어떻게 비교 덧셈을 할지 잘 파악해야할 것 같다.
function solution(people, limit) {
let answer = 0;
people.sort((a, b) => b - a);
console.log(people);
let lt = 0;
let rt = people.length - 1;
while (lt <= rt) {
if (lt === rt) {
answer++;
break;
}
if (people[lt] + people[rt] <= limit) {
lt++;
rt--;
} else {
lt++;
}
answer++;
}
return answer;
}
'일반 학습 > 코딩 테스트' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 (0) | 2022.04.29 |
---|---|
[프로그래머스] 교점에 별 만들기 (0) | 2022.03.29 |
[프로그래머스] 영어 끝말잇기 (0) | 2022.03.28 |
우선권에 따라 선수 데려가기 (0) | 2022.03.27 |
[프로그래머스] 2개 이하로 다른 비트 (0) | 2022.03.25 |
댓글