목록정수론 (18)
기록방
👉 문제링크 2312번: 수 복원하기 첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다. www.acmicpc.net 🔸 문제 분석 🔸 양의 정수 N이 주어지면 소인수 분해 결과를 출력한다. 2부터 N까지 나누며, 몫이 1이 될 때까지 반복한다. 나눈 수를 카운트한다 카운트한 나눈 수 들중에서 값이 1 이상인 것들만 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int tc = sc.nextInt(); StringBuilder sb = n..
👉 문제링크 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 🔸 문제 분석 🔸 입력된 수의 각 자리를 바꿔 만들 수 있는 30의 배수의 최대값을 출력한다. 30의 배수를 만들지 못하면 -1을 출력한다. 30의 배수가 되기 위해서는, 가장 오른쪽 수가 0이 되야하며 모든 자리수의 합이 3의 배수가 되어야 한다. 입력된 수를 자리 수 대로 내림차순 정렬한다. 각 자리수의 합과 가장 끝 수를 확인한다. 🔸 코드 🔸 import java.util.Arrays; import java.util.Collections; imp..
👉 문제링크 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 🔸 문제 분석 🔸 2부터 n까지 수를 선택한다. 선택한 수와 n까지의 배수들을 차례로 지운다. 지우지 않은 수가 남아있다면 반복한다. k번째 지운 수를 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int count = 0; boolean[] arr = new bo..
👉 문제링크 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 🔸 문제 분석 🔸 입력 된 수 n보다 크고 2n이하인 소수의 개수를 출력한다. 0이 입력 될 때까지 반복한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { private static Scanner sc; public static void main(String[] args) { sc = new Scanner(System.in); int n = sc.nextInt(); while (n != 0) ..
👉 문제링크 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 🔸 문제 분석 🔸 입력받은 수의 소인수분해를 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double n = sc.nextDouble(); int d = 2; while (n > 1) { if (n%d == 0) { n /= d; System.out.println(d--); } d++; } } } 🔸 코드 해석 🔸 숫자 n이 1이 될 때까지 2부터 키워가며 나눠본다. 나누어..