> 문제 설명 보기
programmers.co.kr/learn/courses/30/lessons/42885?language=java
>IDEA
최대 2인승의 구명보트를 가능한 적게 써서 모든 사람을 구출하는 문제다.
가장 무거운 사람이 보트에 탔을 때, 가장 가벼운 사람이 같이 탈수 있다면 둘을 같이 보내고, 아니라면 무거운사람 혼자 보내야 한다.
최대 2인승이기 때문에, 혼자 타거나, 둘이 타는 경우의 수 밖에 없다.
>Solution
import java.util.Arrays;
import java.util.LinkedList;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
LinkedList<Integer> linkedList = new LinkedList<>();
Arrays.sort(people);
for(int weight : people){
linkedList.addLast(weight);
}
int weight;
while(!linkedList.isEmpty()){
weight = linkedList.pollLast(); // 가장 무거운놈
if(!linkedList.isEmpty()){
if(weight + linkedList.peekFirst() <= limit){ // 가장 무거운놈과 가장 가벼운놈이 같이 탈 수 있는 경우
linkedList.pollFirst();
}
}
answer++;
}
return answer;
}
}
> Arrays.sort() vs Collections.sort() 성능 비교
Arrays.sort를 사용했을 경우 효율성 테스트
Collections.sort를 사용했을 경우 효율성 테스트
생각보다 성능 차이가 심해서 놀랐다.
컬렉션의 자료구조가 배열보다 무거워서 이런 차이가 발생하는 것 같은데, 간단한 구조인 배열이 훨씬 빠르다는 점을 다시 한번 되뇌었다.
728x90
반응형
'Algorithms > Programmers' 카테고리의 다른 글
[프로그래머스] 섬 연결하기 / JAVA / Kruskal's Algorithm / Prim's Algorithm (0) | 2021.04.23 |
---|---|
[프로그래머스] 등굣길 / JAVA (0) | 2021.04.20 |
[프로그래머스] 큰 수 만들기 / JAVA (0) | 2021.04.19 |
[프로그래머스] 순위 / JAVA (0) | 2021.03.20 |
[프로그래머스] 단어 변환 / JAVA (0) | 2021.03.15 |