목록수학 (75)
기록방
👉 문제링크 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..
👉 문제링크 2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net 🔸 문제 분석 🔸 5개의 정수가 입력되면 평균과 중간값을 출력한다. 🔸 코드 🔸 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = new int[5]; int sum = 0; f..
👉 문제링크 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..
👉 문제링크 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 🔸 문제 분석 🔸 순열의 수 n과 순열이 입력된다. 순열을 사전 순으로 정렬했을 때, 입력 된 순서의 다음 순서인 순열을 출력한다. n이 1만까지 입력되므로, 재귀 메소드를 이용해 사전순 정렬을 구현하면 시간초과가 난다. (1만 팩토리얼..?) 사전 순 정렬은 다시 말하면 순열에서 내림차순 정렬이다. 순열이 [1, 2, 3, 6, 5, 4]이라고 가정하면, 123654 다음으로 큰 수를 찾아야 한다. 654만 봤을때 해당 조합에서 가장 큰 수이다.(내림차순) 그 다음수를 찾으려면 내림차순이 아니게 되는 3을 바..