728x90

2024/06 61

[백준 자바] 9020번(골드바흐의 추측)

난이도 - 실버 2문제1보다 큰 자연수 중에서  1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다.골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다...

백준/Java 2024.06.23

[백준 자바] 17103번(골드바흐 파티션)

난이도 - 실버 2문제골드바흐의 추측: 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다.짝수 N을 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다. 짝수 N이 주어졌을 때, 골드바흐 파티션의 개수를 구해보자. 두 소수의 순서만 다른 것은 같은 파티션이다.입력첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 출력각각의 테스트 케이스마다 골드바흐 파티션의 수를 출력한다.  1,000,000까지의 소수 배열을 생성한다.(isPrime)각 테스트 값을 입력받아 i = 2부터 N / 2까지 i와 N-i 둘 다 소수인지 확인한다.import java.io.*;public class Main { publ..

백준/Java 2024.06.23

[백준 자바] 2960번(에라토스테네스의 체)

난이도 - 실버 4문제에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다.이 알고리즘은 다음과 같다.2부터 N까지 모든 정수를 적는다.아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다.P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다.아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다.N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N과 K가 주어진다. (1 ≤ K 출력첫째 줄에 K번째 지워진 수를 출력한다.  N+1의 boolean 배열을 만들고 2의 배수부터 해당 인덱스의 배열값이 false면 true로 바꾸고(삭제) count를 1 증가시킨다. count가 K가 될 때까지 ..

백준/Java 2024.06.23

[백준 자바] 4948번(베르트랑 공준)

난이도 - 실버 2문제베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다.입력의 마지막에는 0이 주어진다.출력각 테스트 케이스에 대해서, n보다 ..

백준/Java 2024.06.23

[백준 자바] 11653번(소인수분해)

난이도 - 브론즈 1문제정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.입력첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.출력N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.  import java.io.*;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); i..

백준/Java 2024.06.23

[백준 자바] 1929번(소수 구하기) - 에라토스테네스의 체

난이도 - 실버 2문제M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.입력첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.출력한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.  에라토스테네스의 체를 사용한다. 2부터 n까지의 모든 수를 나열하고 2의 배수들을 모두 지운다. 남아있는 수 중에서 다음 수를 소수로 선택하고 그 수의 배수들을 모두 지운다. 이 과정을 범위의 끈까지 반복하고 남아있는 수들이 소수이다.import java.io.*;import java.util.*;public class Main1929 { public static void main(String[] args)..

백준/Java 2024.06.23

[백준 자바] 2581번(소수) - 에라토스테네스의 체

난이도 - 브론즈 2문제자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.입력입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.출력M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.  에라토스테네스의 체를 사용한다. 2..

백준/Java 2024.06.23

[백준 자바] 1978번(소수 찾기)

난이도 - 브론즈 2문제주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.입력첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.출력주어진 수들 중 소수의 개수를 출력한다.  5이상의 모슨 소수는 6의 배수 +- 1의 형태이다. (5와 7, 11과 13, 17과 19, ...) 이를 소수 판별 알고리즘에 적용한다.import java.io.*;import java.util.StringTokenizer;public class Main1978 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedR..

백준/Java 2024.06.22

[백준 자바] 1264번(모음의 개수)

난이도 - 브론즈 4문제영문 문장을 입력받아 모음의 개수를 세는 프로그램을 작성하시오. 모음은 'a', 'e', 'i', 'o', 'u'이며 대문자 또는 소문자이다.입력입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다.입력의 끝에는 한 줄에 '#' 한 글자만이 주어진다.출력각 줄마다 모음의 개수를 세서 출력한다.  1. String.indexOf()모음 문자열(vowel)에 입력 문장의 각 문자의 index 값을 확인한다. 문자가 모음이 아니면 indexOf는 -1을 반환하고 모음이면 -1이 아닌 해당 index값을 반환한다.import java.io.*;publi..

백준/Java 2024.06.22

[백준 자바] 1312번(소수)

난이도 - 실버 5문제피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다.입력첫 번째 줄에 A와 B(1 ≤ A, B ≤ 100,000), N(1 ≤ N ≤ 1,000,000)이 공백을 경계로 주어진다.출력A÷B를 했을 때, 소숫점 아래 N번째 수를 출력한다.  import java.io.*;import java.util.StringTokenizer;public class Main1312 { public static void main(String[] args) throws Exception { BufferedReader br = new Buffered..

백준/Java 2024.06.22
728x90