티스토리 뷰
문제 - (https://programmers.co.kr/learn/courses/30/lessons/42885)
사용할 변수의 범위가 1~50000 이어서 한 명마다 완전탐색을 해서 구명보트에 탈 수 있는지 여부를 판단하는 것은 무리가 있다고 생각했다.
곰곰이 생각해보니,
people 배열을 오름차순 정렬한 뒤, 가장 처음 사람과 마지막 사람의 합에 따라 처리해주면 될 것 같다는 생각을 했다.
왜냐면 이미 정렬된 배열이므로, 첫 사람은 몸무게가 가장 적게 나갈 것이고 마지막 사람은 몸무게가 가장 많이 나갈 것이기 때문에
첫사람과 마지막 사람의 몸무게 합이 limit를 넘으면 그 이후 사람은 더 계산해볼 필요도 없이 limit를 넘을 것이기 때문이다.
📌주의할 점
- 더해서 limit를 넘는 경우, 넘지 않는 경우, 동일한 경우에 어떻게 처리해야할 지 고민해본다.
- 실제 코딩테스트에서는 테스트 케이스 채점 결과만 보여줄 수 있으므로 스스로 테스트 케이스를 추가해서 검증해보는 과정도 필요하다고 생각한다.
😅실수
- 배열을 조회하는 연습을 더 해야겠다. 배열 조회만으로 충분히 풀 수 있는 문제인데 굳이 리스트를 사용해서 "시간초과"가 발생했다.
코드
import java.util.Arrays;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
Arrays.sort(people);
int left = 0;
int right = people.length - 1;
while (left != right && left < right) {
int weight = people[right];
for (int i = left; i < right; i++) {
weight += people[i];
if (weight == limit) {
left = i + 1;
right--;
answer++;
break;
} else if (weight > limit) {
left = i;
right--;
answer++;
break;
}else {
if (i == right - 1) {
// 마지막까지 더했는데도 limit보다 작으면
left = i;
right--;
}
}
}
}
return left == right ? answer + 1 : answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2018 카카오 블라인드 / Java / 자동완성 - 트라이(trie) 사용하지 않고 풀기 (0) | 2020.08.27 |
---|---|
[프로그래머스] 2018 카카오 블라인드 / Java / 파일명 정렬 (0) | 2020.08.26 |
[프로그래머스] 2018 카카오 블라인드 / Java / 방금 그 곡 (0) | 2020.08.22 |
[프로그래머스 카카오 인턴] Java / 수식 최대화 (0) | 2020.08.03 |
[프로그래머스] 42883번 / Java / 큰 수 만들기 (0) | 2020.06.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- withCredentials
- 드래곤 커브
- 자바
- 구명보트
- Access-Control-Allow-Origin
- 코딩테스트
- 우선순위큐
- 14891
- 그리디
- dfs
- Greedy
- 16234
- 배열순회
- 완전탐색
- 사다리 조작
- java
- 구현
- 코테
- 재귀
- header
- 큰 수 만들기
- 아기상어
- 코딩테스트 연습
- 프로그래머스
- 백준
- 시뮬레이션
- BOJ
- 톱니바퀴
- 인구이동
- 브라우저 요청
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함