728x90
난이도 : Lv. 2
풀이일 : 2501164
https://school.programmers.co.kr/learn/courses/30/lessons/42885
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제

아이디어
- people을 정렬한다.
- 가장 가벼운 사람과 가장 무거운 사람을 짝지어 두 사람 무게의 합이 무게 제한을 넘어가는지 확인한다.
- 무게 제한을 초과한다면, 무거운 사람은 혼자 타야한다. 현재 가벼운 사람과 다음 무거운 사람을 짝지어 비교하고 구명 보트 수를 한 개 더한다.
- 무게 제한을 초과하지 않는다면, 현재 가벼운 사람과 현재 무거운 사람이 함께 보트를 탄다. 다음 가벼운 사람과 다음 무거운 사람 짝을 지어 비교할 수 있도록 준비한다.
코드
function solution(people, limit) {
var answer = 0
let front = 0, rear = people.length - 1
people.sort((a, b) => a - b)
while (front <= rear) {
if (people[front] + people[rear] <= limit) {
front++
}
rear--
answer++
}
return answer
}
- front, rear : 각각 가벼운 사람, 무거운 사람의 인덱스가 된다. 가장 가벼운 사람, 가장 무거운 사람부터 시작해 front는 하나씩 증가, rear는 하나씩 감소한다.
- while : 사람이 홀수일 경우도 있으니 <= 조건을 사용한다.
- front, rear가 가리키는 사람의 무게 합이 무게제한을 초과하지 않는다면, front + 1, rear - 1을 하고 보트를 하나 더한다.
- 두 사람의 무게 합이 무게제한을 초과한다면, 무거운 사람이 혼자 보트를 타, rear - 1을 하고 보트를 하나 더한다.
제출 결과

느낀점
- 자스로 풀면 맨날 느린 것 같다. 내가 잘 못짰나 다른 사람들 코드도 살펴봐야지.
- sort 조건을 채우지 않아 한 번 틀렸다. 자바스크립트로 문제 풀 때는 숫자 sort에 유의하자
'알고리즘 > Lv. 2' 카테고리의 다른 글
프로그래머스 42885 구명보트 자바 풀이 (0) | 2025.01.16 |
---|---|
프로그래머스 42885 구명보트 파이썬 풀이 (0) | 2025.01.16 |
프로그래머스 42890 후보키 파이썬 풀이 (0) | 2025.01.06 |
프로그래머스 42747 H-Index 자바스크립트 풀이 (0) | 2024.12.26 |
프로그래머스 42747 H-Index 파이썬 풀이 (1) | 2024.12.26 |