프로그래머스: 구명보트
문제
https://programmers.co.kr/learn/courses/30/lessons/42885
코드
1 | public int solution(int[] people, int limit) { |
흐름
배열을 정렬
배열 내에서 제일 작은 값이랑 제일 큰 값을 더해서 limit이 넘어가는 지 확인
넘어가면 제일 작은 값을 증가
안 넘어가면 제일 큰 값 혼자 빠져야하므로 answer을 증가시키고 right를 감소 시켜서 인덱스를 한칸 땡김
right가 left 보다 작아질 때 까지 반복
ex) [50,50,70,80] 인 경우 left = 0, right = 4 인데 위 코드르 반복하면 right가 점점 줄어들어 left와 만날 때 끝끝
결과
정확성 테스트
번호 | 속도 |
---|---|
테스트 1 | 통과 (1.92ms, 52.7MB) |
테스트 2 | 통과 (1.56ms, 51.4MB) |
테스트 3 | 통과 (1.66ms, 51MB) |
테스트 4 | 통과 (2.02ms, 50.7MB) |
테스트 5 | 통과 (1.42ms, 53MB) |
테스트 6 | 통과 (1.37ms, 50.9MB) |
테스트 7 | 통과 (1.46ms, 53.1MB) |
테스트 8 | 통과 (0.95ms, 52.6MB) |
테스트 9 | 통과 (1.15ms, 52.5MB) |
테스트 10 | 통과 (2.01ms, 52.4MB) |
테스트 11 | 통과 (1.68ms, 52.7MB) |
테스트 12 | 통과 (1.78ms, 52.7MB) |
테스트 13 | 통과 (2.07ms, 52.5MB) |
테스트 14 | 통과 (1.46ms, 50.5MB) |
테스트 15 | 통과 (1.22ms, 50.1MB) |
효율성 테스트
번호 | 속도 |
---|---|
테스트 1 | 통과 (11.43ms, 56.1MB) |
테스트 2 | 통과 (11.63ms, 55.7MB) |
테스트 3 | 통과 (11.88ms, 53.7MB) |
테스트 4 | 통과 (8.84ms, 56.3MB) |
테스트 5 | 통과 (11.08ms, 55.7MB) |
테스트 케이스
1 | assertEquals(3, test.solution(new int[] {70, 50, 80, 50}, 100)); |