알고리즘
-
백준 알고리즘 12단계 정렬 2750번 문제입니다.Q. N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. [입력]- 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다.- 둘째 줄부터 N개의 줄에는 수가 주어진다. [조건]- 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.- 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이입력받은 값들에 대해 정렬을 요구하는 문제이다.간단히 버블정렬 알고리즘으로 문제를 풀었다. 소스package com.baek.algo.step12;import java.util.Scanner;public class Q2750 { public static void main(String[]..
[백준/Java]Q2750 2021. 9. 7. -
백준 알고리즘 12단계 정렬 2751번 문제입니다. Q. N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. [입력] - 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. - 둘째 줄부터 N개의 줄에는 수가 주어진다. [조건] - 절댓값이 1,000,000보다 작거나 같은 정수이다. - 수는 중복되지 않는다. - 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. - 제한 시간 2초 풀이 앞선 2750 문제와 내용은 같지만 조건이 다른 문제였다. 주어지는 수의 개수가 1000000까지 제한되며, 2초안에 정렬되어야 한다. 풀이 언어의 내장 함수를 추천하는 것으로 보아 Java의 정렬 함수를 찾아 풀어야할 것 같았다. 시간을 줄이기 ..
[백준/Java]Q2751 2021. 9. 7. -
백준 알고리즘 11단계 브루트 포스 2231번 문제입니다. Q. 어떤 자연수 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을 출력한다. 풀이 123이라는 ..
[백준/Java]Q2231 2021. 8. 27. -
백준 알고리즘 11단계 브루트 포스 7568번 문제입니다. Q. 덩치 구하기 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165)라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼 때 C와 D는 누구도 상대방보다 더 크다고 말할 수 없다. 학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 ..
[백준/Java]Q7568 2021. 8. 27. -
백준 알고리즘 11단계 브루트 포스 2798번 문제입니다. Q. 블랙잭 게임 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오. [입력] - 첫째 줄에 카드의 개수 N과 M이 주어진다. - 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. [조건]..
[백준/Java]Q2798 2021. 8. 25. -
백준 알고리즘 9단계 기본 수학2 4948번 문제입니다. Q. 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. [입력] - 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다. - 입력의 마지막에는 0이 주어진다. [조건] - 각 테스트 케이스에 대해서 n보다 크고 2n보다 작거나 같은 소수의 개수를 출력한다. - 1 ≤ n ≤ 123456 풀이 이 문제 역시 소수의 연장선에 ..
[백준/Java]Q4948 2021. 7. 21. -
백준 알고리즘 9단계 기본 수학2 11653번 문제입니다. Q. 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. [입력] - 첫째 줄에 정수 N이 주어진다. [조건] - 1 ≤ N ≤ 10000000 - N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 풀이 소인수분해는 1보다 큰 자연수를 소수인 인수들만의 곱으로 나타내는 것이다. Ex) 72 = 2 * 2 * 2 * 3 * 3 82 = 2 * 41 125 = 5 * 5 * 5 28 = 2 * 2 * 7 소인수분해 결과를 오름차순으로 출력하면 되는 문제이기 때문에 소수 중 가장 작은 수인 2부터 나누기 시작해서 0으로 떨어지지 않는 경우는 증감시키고 0으로 떨어지는 경우는 반복을 해주..
[백준/Java]Q11653 2021. 7. 21. -
백준 알고리즘 9단계 기본 수학2 2581번 문제입니다. Q. 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. [입력] - 첫째 줄에 M이, 둘째 줄에 N이 주어진다. [조건] - M과 N은 10000이하의 자연수이며, M은 N보다 작거나 같다. - M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. - M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. 풀이 이전 문제(1978번)의 연장선으로 이전 문제가 테스트 개수만큼 입력받은 수의 소수를 구했다면 이 문제는 입력받은 M, N 사이의 소수를 구해야했다. 소수를 구하는 방식은 동일하게 사..
[백준/Java]Q2581 2021. 7. 21.