728x90
반응형
다시 풀어도 접근법을 모르겠어서 기록한다.
문제 링크
조건
- 최대 2명을 보트에 태울 수 있다.
- 무게 제한이 있다.(limit)
정답 코드
function solution(people, limit) {
// 내림차순 정렬(작은 => 큰)
people.sort((a, b) => a - b);
let i = 0;
for (j = people.length - 1; i < j; j--) {
if (people[i] + people[j] <= limit) i++;
}
return people.length - i;
}
for문 안에 식을 저렇게도 사용할 수 있다니..
1. 제일 작은 수와 제일 큰 수를 더한 값이 limit보다 큰 경우
2. 제일 작은 수와 그 다음으로 큰 수를 더하기
3. 1번부터 반복
1. 제일 작은 수와 제일 큰 수를 더한 값이 limit보다 작거나 같은 경우
2. 그 다음으로 작은 값과 그 다음으로 큰 값 더하기
3. 1번부터 반복
return 코드를 저렇게 쓴 것도 기발했다고 생각한다. 기본적으로 구명보트를 모든 사람이 각자 1번씩 사용한다고 가정하고, for문을 통해 구한 두 사람이 구명보트를 같이 사용한 횟수(i)를 빼주는 방식이다.
질문이나 잘못된 점은 댓글로 남겨주세요 :)💖
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JS] Lv2. 배달 (0) | 2023.03.31 |
---|---|
[프로그래머스] Lv2. 행렬의 곱셈 (0) | 2023.03.29 |
[프로그래머스] Lv2. 땅따먹기 (0) | 2023.03.28 |
[프로그래머스] Lv2. 기능개발 (0) | 2023.03.21 |
[프로그래머스] Lv2. 해시 - 위장 (0) | 2023.02.07 |
댓글