[백준] 24039번: 2021은 무엇이 특별할까?
2022. 1. 3. 12:22ㆍ알고리즘
https://www.acmicpc.net/problem/24039
이 문제는 2021년 마지막 날, Good Bye, BOJ 2021! 대회에서 첫 번째 문제이다.
문제설명
연속한 두 소수의 곱으로 이루어져있으면 그 수를 특별한 수라고 한다.
ex) 2 x 3, 3 x 5, 5 x 7, 7 x 11 등등
그리고 출력은 내가 입력한 수 N보다 큰 특별한 수를 출력하는 것이다.
2020을 입력하면 43 x 47 = 2021이 출력이 되야하는 것
코드
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int result = 0, i, j;
ArrayList<Integer> list = new ArrayList<Integer>();
// 10000까지의 소수를 구하는 코드
for (i = 2; i <= 10000; i++) {
for (j = 2; j < i; j++) {
if (i % j == 0) {
break;
}
}
if (i == j) {
list.add(i);
}
}
for (i = 0; i < list.size(); i++) {
result = list.get(i) * list.get(i + 1);
if (result > n) {
System.out.println(result);
System.exit(0);
}
}
}
}
코드 설명
나는 ArrayList를 이용해서 풀었다. list안에다가 10000까지의 소수들을 넣어놓고 list의 사이즈만큼 for문을 돌려서
result라는 변수안에 i번째 소수의 값 * i+1번째 소수의 값을 넣었다.
그렇게 값들을 계속 넣는데, 만약 내가 입력한 N의 값보다 커지는 그 순간에, 그 때의 result값을 출력하고 시스템을 종료한다.
'알고리즘' 카테고리의 다른 글
[백준] 1850번: 최대공약수 (0) | 2022.01.09 |
---|---|
[백준] 10828번: 스택 (0) | 2022.01.08 |
[백준] 12605번: 단어순서 뒤집기 (JAVA) (2) | 2022.01.06 |
[백준] 7785번: 회사에 있는 사람(JAVA) (1) | 2022.01.04 |
[백준] 2693번: N번째 큰 수 (JAVA) (0) | 2022.01.03 |