[JAVA] 2581번 소수 🤎2 : 에라토스테네스의 체 알고리즘으로 시간복잡도를 줄이자!
·
Baekjoon
https://www.acmicpc.net/problem/2581문제 자연수 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을..
[JAVA] 2231번 분해합 🤎2 : 구현만 하면 되는데...! 😂
·
Baekjoon
https://www.acmicpc.net/problem/2231 문제어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.입력첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.출력첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.해설 및 생각결론 먼저 말하자면 진짜 ..
[JAVA] 2798번 블랙잭 🤎2 : 나의 첫 무서운 브루트포스 알고리즘 풀이
·
Baekjoon
https://www.acmicpc.net/problem/2798 입력첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다.합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다.출력첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다. 나의 생각문제 이해 자체는 그렇게 어렵지 않다. 그냥 N번만큼 숫자를 받고 3개씩 더해서 그 합이 M을 넘지 않으면서 M과 최대한 가깝게 하는 합을 구하면 되는 것이다.와 근데 딱 든 생각은 아니 경우의 수가 너무 많은데??? 였다.그래서 최대한 간결하게 풀 수 있는 방법이 없을까... ..
[JAVA] 백준 1978번 소수찾기 🤎2 : 소수의 약수 범위에 대한 매우 중요한 생각!
·
Baekjoon
https://www.acmicpc.net/problem/1978 백준 1978번 소수 찾기 문제를 풀 때에 소수에 관한 생각은 앞으로 소수 판별이 필요한 곳에 굉장히 많이 쓰일 것 같아 한번 정리 해보기로 했다. 문제는 말 그대로 소수면 카운팅해서 몇개인지 출력하는 문제이다 먼저 가장 먼저 든 생각은 소수의 정의가1보다 크고 약수가 자신과 1 이외에 없는 수가 소수. 이니깐 그대로 한번 해보았다.import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int c..
[JAVA] 10809번 알파벳 찾기 🤎2 : 아스키코드를 활용한 문자열 갯수 카운팅하기!
·
Baekjoon
https://www.acmicpc.net/problem/10809 Baekjoon 10809번 문제는 주어진 문자열에서 각 알파벳이 처음 등장하는 위치를 구하는 문제 import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String input = sc.nextLine(); // 각 알파벳의 등장 위치를 저장할 배열 초기화 int[] positions = new int[26]; for (int i = 0; i 문자열을 카운팅 하고 싶을 때 문자- '0'을 하면 아스키코..