작성
·
195
0
import java.util.*;
class Main {
static String answer = "NO";
static int n, total = 0;
boolean flag = false;
public void dfs(int L, int sum, int[] arr) {
if(flag) return;
if(sum > total/2) return;
if(L == n){
if(total/2 == sum){
answer = "YES";
flag = true;
}
}else{
dfs(L + 1, sum + arr[L], arr);
dfs(L + 1, sum, arr);
}
}
public void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++){
arr[i] = sc.nextInt();
total += arr[i];
}
T.dfs(0, 0, arr);
System.out.println(answer);
}
}
복습 차원에서 똑같이 코드를 실행하는데 런타임에러가 자꾸 발생하는 이유를 모르겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
해당 Java 코드에서 런타임 에러의 주된 원인은 main
메서드의 선언 방식에 있습니다. Java에서 main
메서드는 프로그램의 시작점으로서 반드시 public static void
로 선언되어야 합니다. 그러나 코드에서 main
메서드는 public void
로 선언되어 있어서 정적 메서드로서의 역할을 수행하지 못하고 있습니다.
올바른 main
메서드의 선언 방식은 다음과 같습니다:
public static void main(String[] args) {
// 여기에 코드를 작성
}
따라서, 코드를 다음과 같이 수정해야 합니다:
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++){
arr[i] = sc.nextInt();
total += arr[i];
}
T.dfs(0, 0, arr);
System.out.println(answer);
}
이렇게 main
메서드를 public static void
로 수정하면 프로그램이 올바르게 실행되어 런타임 에러를 해결할 수 있습니다.