728x90
문제
풀이
function solution(people, limit) {
let answer = 0; // 구명보트 수
let startIndex = 0;
let endIndex = people.length - 1;
let saveActivity = true; // 구출 작업 진행 여부
people.sort((a, b) => b - a); // 제일 무거운 사람 순으로 정렬
while (saveActivity) {
// 마지막 한명을 태우고 구출 작업 종료
if(startIndex === endIndex) {
answer++;
startIndex++;
saveActivity = false;
break;
}
// 가장 가벼운 사람과 태웠을 때 제한 무게를 넘기지 않으면 2명을 태운다.
if(people[startIndex] + people[endIndex] <= limit) {
answer++;
++startIndex;
--endIndex;
} else {
answer++;
++startIndex;
}
// 남은 사람 없음. 구출 작업 종료
if(startIndex > endIndex) {
saveActivity = false;
break;
}
}
return answer;
}
채점결과
풀이후기
shift(), pop() 을 해가며 사람을 구하려고 했다. 그랬더니 정확성은 만점인데 효율성에서 0점 ㅠㅠ 원본 배열을 건드리지 않는 방향으로 인덱스 정보를 따로 선언하고 풀었더니 효율성 테스트를 통과할 수 있었다.
이젠 레벨 2 난이도에 익숙해져가고 있다~! 화이팅~!
728x90
'Study Note > Algorithm' 카테고리의 다른 글
프로그래머스 #2021 KAKAO BLIND -신규 아이디 추천 lv1 (0) | 2022.07.04 |
---|---|
프로그래머스 #탐욕법(Greedy) - 체육복 lv1 (2) | 2021.09.12 |
프로그래머스 #정렬 - H-Index lv2 (0) | 2021.09.12 |
프로그래머스 #완전탐색 - 소수 찾기 lv2 (0) | 2021.09.12 |
프로그래머스 #스택/큐 - 프린터 lv2 (0) | 2021.09.10 |
댓글