반응형
1. Scanner를 이용한 방법
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt();
int[] num = new int[N+1];
int[] sosu = new int[N+1];
int sum = 0;
int min = N;
for(int i=M; i<=N; i++){
num[i] += i;
for(int j=2; j<=N; j++){
if(j == num[i]){
sosu[j] += j;
min = Math.min(sosu[j], min);
sum += sosu[j];
}
if(num[i] % j == 0){
break;
}
}
}
if(sum == 0){
System.out.println(-1);
}else{
System.out.println(sum);
System.out.println(min);
}
sc.close();
}
}
2. BufferedReader를 이용한 방법
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int M = Integer.parseInt(br.readLine());
int N = Integer.parseInt(br.readLine());
int[] num = new int[N+1];
int[] sosu = new int[N+1];
int sum = 0;
int min = N;
for(int i=M; i<=N; i++){
num[i] += i;
for(int j=2; j<=N; j++){
if(j == num[i]){
sosu[j] += j;
min = Math.min(sosu[j], min);
sum += sosu[j];
}
if(num[i] % j == 0){
break;
}
}
}
if(sum == 0){
System.out.println(-1);
}else{
System.out.println(sum);
System.out.println(min);
}
br.close();
}
}
반례도 다 맞는데 계속 틀리길래 이것저것 바꿔보면서 이유를 찾아보니 min 값을 임의의 숫자로 정할 게 아니라 최댓값인 N으로 설정해줘야 되는 것이었다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 27323 - 직사각형 (JAVA/ 자바) (0) | 2024.04.10 |
---|---|
[백준] 11653 - 소인수분해 (JAVA/ 자바) (0) | 2024.04.09 |
[백준] 1978 - 소수 찾기 (JAVA/ 자바) (0) | 2024.04.06 |
[백준] 9506 - 약수들의 합 (JAVA/ 자바) (0) | 2024.04.05 |
[백준] 2501 - 약수 구하기 (JAVA/ 자바) (0) | 2024.04.04 |