728x90

백준풀이 84

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

[백준 자바] 2153번(소수 단어)

난이도 - 브론즈 2문제소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자.알파벳 대소문자로 이루어진 영어 단어가 하나 있을 때, a를 1로, b를 2로, …, z를 26으로, A를 27로, …, Z를 52로 하여 그 합을 구한다. 예를 들어 cyworld는 합을 구하면 100이 되고, abcd는 10이 된다.이와 같이 구한 수가 소수인 경우, 그 단어를 소수 단어라고 한다. 단어가 주어졌을 때, 그 단어가 소수 단어인지 판별하는 프로그램을 작성하시오.입력첫째 줄에 단어가 주어진다. 단어의 길이는 20자 이하이다. 주어지는 단어는 알파벳 소문자와 대문자만으로 이루어져 있다.출력아래의 예..

백준/Java 2024.06.22

[백준 자바] 8741번(이진수 합)

난이도 - 브론즈 2문제세계적인 이진수 매니아 현수는 오늘도 이진수를 연구하고 있다.오늘은 이진수로 나타냈을 때, k자리 이하인 모든 자연수의 합을 구해보려고 한다.k가 주어졌을 때, 이진수로 나타냈을 때, k자리 이하인 모든 자연수의 합을 구하는 프로그램을 작성하시오.입력첫째 줄에 k가 주어진다. (1 ≤ k ≤ 106)출력첫째 줄에 이진수로 나타냈을 때, k자리 이하인 모든 자연수의 합을 이진수로 출력한다.  처음 구상은 k자리의 최대 2진수("1".repeat(k))를 10진수로 변환하여 1부터 10진수까지의 합을 구하고 그 값을 2진수로 변환하는 거였다. 하지만 이렇게 하니 for문이 많이 돌아 시간초과가 발생했다. 다른 방법을 모색하던 중 출력값들 사이의 규칙을 발견했다.k=1일 때 출력값 =>..

백준/Java 2024.06.21

[백준 자바] 12813번(이진수 연산) - and, or, xor, not

난이도 - 브론즈 2문제총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.입력첫째 줄에 이진수 A, 둘째 줄에 이진수 B가 주어진다. 두 이진수의 길이는 모두 100,000이다. 예제의 경우에만 길이가 10이며, 예제는 채점하지 않는다.출력첫째 줄부터 한 줄에 하나씩 차례대로 A & B, A | B, A ^ B, ~A, ~B를 출력한다.  AND둘 다 1일 때만 연산 결과가 1OR둘 다 0일 때만 연산 결과가 0XOR두 값이 다르면 1, 같으면 0NOT해당 값이 0이면 1, 1이면 0import java.io.*;public class Main12813 { public static void m..

백준/Java 2024.06.20

[백준 자바] 2729번(이진수 덧셈)

난이도 - 브론즈 1문제이진수 덧셈은 매우 간단하고, 십진수 덧셈과 비슷하게 하면 된다. 십진수 덧셈을 할 때는, 오른쪽부터 왼쪽으로 차례대로 숫자 하나씩 더하면 된다. 이진수 덧셈도 이와 비슷하게 하면 된다. 십진수 덧셈은 외워야 할 덧셈이 많지만, 이진수 덧셈은 아래와 같이 5가지만 기억하면 된다.0 + 0 = 01 + 0 = 10 + 1 = 11 + 1 = 101 + 1 + 1 = 11두 이진수가 주어졌을 때, 그 합을 이진수로 출력하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 수 T(1출력각 테스트 케이스에 대해 입력으로 주어진 두 이진수의 합을 구해 이진수로 출력한다. 숫자의 앞에 불필요한 0이 붙으면 안 된다.  로직은 1252번에 사용한 코드와 같다.2024.06.20 - [백준/..

백준/Java 2024.06.20

[백준 자바] 1252번(이진수 덧셈) - 정규표현식, String.format()

난이도 - 브론즈 2문제두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오.입력첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다.출력첫째 줄에 이진수 덧셈 결과를 출력한다. 결과가 0인 경우를 제외하고는 출력되는 이진수는 항상 1로 시작해야 한다.  입력받은 2진수의 앞에 있는 모든 '0'을 제거한다.2진수의 길이가 0이 되면 2진수를 '0'으로 설정한다.binarySum()두 2진수의 길이를 맞춘다. 더 짧은 2진수의 앞에 부족한만큼 '0'을 채운다.더하기 수행: b1.charAt(i) + b2.charAt(i) + carry (carry는 처음에는 뒤에서 넘어오는..

백준/Java 2024.06.20
728x90