1. 저울
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42886
코딩테스트 연습 - 저울 | 프로그래머스
하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 합니다. 이 저울의 양팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같습니다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있습니다. 저울추가 담긴 배열 weight가 매개변수로 주어질 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값을 return 하도록 solution 함수를 작성해주세요. 예를 들어, 무게가 각
programmers.co.kr
알고리즘 설명:
오름차순으로 정렬 후 인덱스를 차례대로 읽으면서 다음 인덱스 값이 현재까지 인덱스들의 값의 합보다 크다면 현재 인덱스 값의 +1이 조합할 수 없는 가장 작은 값이다.
- 오름차순으로 정렬
- 생각해야될 조건이 크게 3개로 나뉜다.
- 처음 들어오는 숫자가 1이 아닌 경우 -> 1이 정답
- 2번째 들어오는 숫자가 1or 2가 아닌 경우 -> 2가 정답
- 나머지에 경우 합계가 다음 인덱스보다 작은 경우 현재 인덱스 값에 +1을 해준 값이 정답
막혔던 지점:
- 두 번째 인덱스에 1이나 2가 아닌 경우를 빼먹었더니 테스트케이스 2개가 틀렸다.
코드(Java)
package coding;
import java.util.Arrays;
public class Scale {
public int solution(int[] weight) {
Arrays.sort(weight);
int sum = 0;
int answer = 0;
int i = 0;
if (weight[0] != 1)
return 1;
if (weight[1] != 1) {
sum = 3;
i = 2;
}
for (; i < weight.length - 1; i++) {
sum += weight[i];
if (sum < weight[i + 1]) {
answer = sum + 1;
break;
} else if (i == weight.length - 2) {
answer = sum + weight[i + 1] + 1;
}
}
return answer;
}
public static void main(String[] args) {
}
}
'알고리즘 > 문제풀이' 카테고리의 다른 글
야근 지수(프로그래머스, Lv 3, Java) (0) | 2020.03.21 |
---|---|
보행자 천국(프로그래머스, Lv 3, Java) (0) | 2020.03.10 |
조이스틱(프로그래머스, Lv2, Java) (0) | 2020.03.01 |
입국심사(프로그래머스, Lv 3, Java) (0) | 2020.02.12 |
방문 길이 (프로그래머스, Lv 3, 스킬체크, Java) (0) | 2020.01.07 |
댓글