이 유형의 문제는 직접 예제를 손으로 풀어가면서 규칙성을 찾아내야한다. 이런 문제에 너무 약해서 연습이 많이 필요한 것 같다.
answer >= 현재 무게 추의 무게(w)
일 때 answer += w
answer < 현재 무게 추의 무게(w)
일 때 break
[1, 1, 2, 3, 6, 7, 30]의 무게 추가 주어졌을 때 직접 수행해보면
각 단계에서 answer
미만의 무게는 모두 만들 수 있음을 알 수 있고 만들 수 있는 무게의 최댓값은 answer - 1
이다. 따라서 answer < w
일 때 answer
는 만들 수 없는 무게의 최솟값이 된다.
import java.util.*;
class Solution {
public int solution(int[] weight) {
Arrays.sort(weight);
int answer = 1;
for(int i = 0 ; i < weight.length ; ++i){
int w = weight[i];
if(answer >= w) answer += w;
else break;
}
return answer;
}
}