본문 바로가기

백준

백준 닷컴 단계 별로 풀어보기 25단계 1단계 동전 0 (백준 11047) 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. import java.io.*; import java.util.*; public class Step_1 { public static void main(String[] args) throws IOException { Buffere.. 더보기
백준 닷컴 단계 별로 풀어보기 24단계 1단계 구간 합 구하기 4 (백준 11659) 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. import java.io.*; import java.util.*; public class Step_1 { static int n; static int m; static int[] arr; static int[] sums; public static void main(String[].. 더보기
백준 닷컴 단계 별로 풀어보기 23단계 1단계 알고리즘 수업 - 피보나치 수 1 (백준 24416) 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍으로 구하는 알고리즘을 배웠다. 재귀호출에 비해 동적 프로그래밍이 얼마나 빠른지 확인해 보자. 아래 의사 코드를 이용하여 n의 피보나치 수를 구할 경우 코드1 코드2 실행 횟수를 출력하자. 첫째 줄에 n(5 ≤ n ≤ 40)이 주어진다. 코드1 코드2 실행 횟수를 한 줄에 출력한다 import java.io.*; import java.util.*; public class Step_1 { static int a; static int b; public static void main(String[] args) throws IOException { Scanner sc = new Scanner(Syst.. 더보기
백준 닷컴 단계 별로 풀어보기 22단계 1단계 N과 M (1) (백준 15649) 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. import java.io.*; import java.util.*; public class Step_1 { static int n; static int m; static int[] arr; static boolean[] check; static StringBuilder sb = new StringBuilder(); public static voi.. 더보기
백준 닷컴 단계 별로 풀어보기 21단계 1단계 팩토리얼 2 (백준 27433) 첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다. 첫째 줄에 N!을 출력한다. import java.io.*; import java.util.*; public class Step_1 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br.readLine()); bw.write(factorial(.. 더보기
백준 닷컴 단계 별로 풀어보기 20단계 1단계 약수 양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오. 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다. 첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다. import java.io.*; import java.util.*; public class Step_1 { public static void main(String[] args) throws IOException { Buffered.. 더보기
백준 닷컴 단계 별로 풀어보기 19단계 1단계 베라의 패션 베라는 상의 N 벌과 하의 N 벌이 있다. i 번째 상의와 i 번째 하의는 모두 색상 i를 가진다. N 개의 색상은 모두 서로 다르다. 상의와 하의가 서로 다른 색상인 조합은 총 몇 가지일까? import java.io.*; import java.util.*; public class Step_1 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = I.. 더보기
백준 닷컴 단계 별로 풀어보기 16단계 1단계 스택 2 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. 1 x: 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000) 2: 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다. 3: 스택에 들어있는 정수의 개수를 출력한다. 4: 스택이 비어있으면 1, 아니면 0을 출력한다. 5: 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다. 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. import java.io.*; import java.util.*; public class Step_1 { pub.. 더보기