1. 저울
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42886
알고리즘 설명:
오름차순으로 정렬 후 인덱스를 차례대로 읽으면서 다음 인덱스 값이 현재까지 인덱스들의 값의 합보다 크다면 현재 인덱스 값의 +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 |
댓글