문제 🔽
https://school.programmers.co.kr/learn/courses/30/lessons/42885
다른사람 풀이 🔽
function solution(people, limit) {
people.sort(function(a, b){return a-b});
for(var i=0, j=people.length-1; i < j; j--) {
if( people[i] + people[j] <= limit ) i++;
}
return people.length-i;
}
내풀이🔽
1. 실패 ❌ => 논리 오류
function solution(people, limit) {
let sum = 0;
let boatCount = 1;
let weight = people.sort((a,b)=>{
return a-b
})
for(let i=0; i<weight.length; i++){
if(sum+weight[i]<=limit){
sum+=weight[i]
}else{
sum=weight[i];
++boatCount;
}
}
return boatCount;
}
2. 성공 ⭕
function solution(people, limit) {
let boatCount = 0;
people = people.sort((a,b)=>{
return b-a;
})
for(let i=0, j=people.length-1; i<=j; ++i,++boatCount){
if(people[i]+people[j]<=limit){
--j;
}
}
return boatCount;
}
느낀점🔽
2가지 사항을 간과했다.
한번에 최대 2명까지만 보트를 탈 수 있다는 것
그리고 최대한 많은 사람이 탈 수 있으려면 최대몸무게 + 최소몸무게인 사람이 함께 타야 한다는 것
-> 요 2가지 사항때문에 시간이 너무 오래 걸렸다.
'Javascript' 카테고리의 다른 글
프로그래머스 코딩테스트 풀이(js) > N개의 최소공배수(lv2) (0) | 2023.06.26 |
---|---|
프로그래머스 코딩테스트 풀이(js) > 점프와 순간이동(lv2) (0) | 2023.06.25 |
프로그래머스 코딩테스트 풀이(js) > 예상 대진표(lv2) (0) | 2023.06.23 |
프로그래머스 코딩테스트 풀이(js) > 카펫 (lv2) (0) | 2023.06.20 |
프로그래머스 코딩테스트 풀이(js) > 영어 끝말잇기 (lv2) (0) | 2023.06.19 |