알고리즘(BOJ)/Gold
백준 - 저울 2437
ch.0
2023. 3. 15. 23:32
문제 분석
처음에는 경우의수를 DFS로 구하려다가 알고리즘 분류 힌트를 보고 안쓰고 풀 수 있다는 방법이 있다는것을 찾아야했다.
아무리 생각해도 모르겠어서 다른 사람 풀이방식만 참고했다.
누적된 수의 +1 보다 다음수가 크다면 안된다는 것이다
sum+1 >= array[i] 를 만족해야 한다는 것이다.
처음에 sum은 +1까지하면 1이니까 첫번째 수가 1보다 큰 수가 오면 안될것이다 그다음 누적의 수는 2 인데 2보다 큰수가 오면 조합이 안된다.
전체 소스
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int repeat = Integer.parseInt(br.readLine());
StringTokenizer st= new StringTokenizer(br.readLine(), " ");
int[] array = new int[repeat];
for(int i=0; i<repeat; i++) {
array[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(array);
int sum = 0;
for(int i=0; i<repeat; i++) {
if(sum+1>=array[i]) {
sum += array[i];
}else {
break;
}
}
System.out.println(sum+1);
}
}
문제
예제 입력 1
7
3 1 6 2 7 30 1
예제 출력 1
21