728x90

백준 87

[백준 자바] 7789번(텔레프라임) - 소수 판정

난이도 - 브론즈 2문제소수를 매우 좋아하는 수학자가 있다. 이 수학자는 매번 전화번호를 받을 때 마다, 그 전화번호가 소수인지 아닌지를 검사한다. 수학자는 자신의 모든 친구의 전화번호가 소수인지 아닌지를 기억하고 있다.계속해서 늘어나는 휴대전화 인구의 급증에 따라 정부는 한 자리를 기존 번호 앞에 붙이는 정책을 시행하기로 했다.수학자는 큰 고민에 빠졌다. 소수 전화번호를 가지고 있는 친구의 전화번호가 이제 평범한 숫자가 될 수도 있기 때문이다.수학자의 친구 중 한 사람의 원래 전화번호와 새로이 앞에 붙는 번호 한 자리가 주어졌을 때, 원래 전화번호와 새로운 전화번호가 모두 소수인지 아닌지를 구하는 프로그램을 작성하시오.입력첫째 줄에 여섯 자리의 기존 전화번호와 새로 추가되는 한 자리 번호가 주어진다. ..

백준/Java 2024.06.24

[백준 자바] 1644번(소수의 연속합)

난이도 - 골드 3문제하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다.3 : 3 (한 가지)41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지)53 : 5+7+11+13+17 = 53 (두 가지)하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+5+7과 같은 표현도 적합하지 않다.자연수가 주어졌을 때, 이 자연수를 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 자연수 N이 주어진..

백준/Java 2024.06.24

[백준 자바] 1016번(제곱 ㄴㄴ수)

난이도 - 골드 1문제어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수가 몇 개 있는지 출력한다.입력첫째 줄에 두 정수 min과 max가 주어진다.출력첫째 줄에 min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수의 개수를 출력한다.제한1 ≤ min ≤ 1,000,000,000,000min ≤ max ≤ min + 1,000,000  min~max의 수가 제곱수의 배수인지 나타내는 배열을 생성한다.(isNoeSquares)outerLoop: 2부터 루트max까지의 i의 제곱수를 계산한다.(square)                  innerL..

백준/Java 2024.06.24

[백준 자바] 24039번(2021은 무엇이 특별할까?) - 연속한 두 소수의 곱

난이도 - 실버 5문제백준 온라인 저지의 송년대회 Good Bye BOJ, 2021!의 개최일은 2021년 12월 31일이다. 원이는 대회가 개최된다는 사실이 기뻐 제목을 뚫어져라 보다가 2021이 무언가 특별하다는 사실을 깨달았다.그렇다. 2021은 연속한 두 소수 43과 47의 곱이다. 다음에 이런년도가 오려면 무려 470년 뒤인 2491년이 되어야 한다. 원이는 어떤 수가 연속한 두 소수의 곱으로 이루어져 있으면 특별한 수라 부르기로 하였다.주어진 수보다 큰 특별한 수 중 가장 작은 수를 구하는 프로그램을 작성하시오.입력첫 번째 줄에 주어진 수 𝑁$N$이 주어진다.출력첫 번째 줄에 𝑁$N$보다 큰 특별한 수 중 가장 작은 수를 출력하여라.제한 1≤𝑁≤10000$1 \le N \le 10\,00..

백준/Java 2024.06.23

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

난이도 - 실버 1문제1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다.4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다.예를 들어 8은 3 + 5로 나타낼 수 있고, 3과 5는 모두 홀수인 소수이다. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23 이다.이 추측은 아직도 해결되지 않은 문제이다.백만 이하의 모든 짝수에 대해서, 이 추측을 검증하는 프로그램을 작성하시오.입력입력은 하나 또는 그 이상의 테스트 케이스로 이루어져 있다. 테스트 케이스의 개수는 100,000개를 넘지 않는다.각 테스트 케이스는 짝수 정수 n 하나로 이루어져 있다. (6 ≤ ..

백준/Java 2024.06.23

[백준 자바] 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
728x90