본문 바로가기

자바45

[백준] 11051번 : 이항 계수 2(JAVA) https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있으면서 동적 계획법을 이용하여 푸는 문제이다. 이항 계수 1의 문제는 범위가 10이였지만 이번에는 1000이다. 10!의 값은 3,628,800으로 수가 10만 되어도 범위가 기하 급수적으로 증가하는데 1000!의 값은 셀 수 없는 값이 될 것이다. 나는 이항 계수의 공식에 집착한 나머지 푸는데 시간이 좀 걸렸다. 처음에는 이항 계수의 공식으로 푼 값을 .. 2019. 12. 1.
[백준] 11050번 : 이항 계수 1(JAVA) https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있는 문제이다. 이항 계수(Binomial Coefficient)란 : 주어진 크기의 (순서 없는)조합의 가짓수이다. 예). 5C2 = 5! / (2! * (5-2)!) = 10 N의 범위가 10까지 밖에 안되어 재귀함수로 계산을 하였다. import java.util.Scanner; public class Question_11050 { public static.. 2019. 12. 1.
[백준] 9095번 : 1, 2, 3 더하기(JAVA) https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 알고리즘 분류 중 다이나믹 프로그래밍의 카테고리에 포함되어 있는 문제이다.. 2019. 12. 1.
[백준] 9461번 : 파도반 수열(JAVA) https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이.. 2019. 12. 1.
[백준] 1904번 : 01타일(JAVA) https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다... 2019. 11. 30.
[백준] 2108번 : 통계학(JAVA) https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 12단계 정렬의 카테고리에 포함되어 있는 문제이다. 정답률이 27.050%인 문제로 12단계의 정렬 카테고리에 포함된 문제 중 2번 째로 정답률이 낮은 문제이다. 나는 이 카테고리에서 이 문제를 가장 마지막에 풀었으며 정렬 카테고리 문제의 난이도 중에서 가장 어렵다고 생각한다. N개의 입력된 수로 산술평균, 중앙값, 최빈값, 범위 4가지를 구해야 하기 때문이.. 2019. 11. 30.
[백준] 1003번 : 피보나치 함수(JAVA) https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다. 동적 계획법이란 Dynamic Programming 이라고도 하며 큰 문제를 작은 문제들로 나누어 해결하는 알고리즘이다. 이 문제를 풀고나서 다른 사람들이 푼 방법도 한번 비교해 봤는데 내 생각보다 많이 비슷해서 좀 놀란 문제이다. 나는 2차원 배열을 이용하여 문제를 해결하였으며 최대 40이 입력되므로 40개의 배열만 선언하고 미리 계산해 두는 방식으로 해결.. 2019. 11. 28.
[백준] 3036번 : 링(JAVA) https://www.acmicpc.net/problem/3036 3036번: 링 문제 상근이는 창고에서 링 N개를 발견했다. 상근이는 각각의 링이 앞에 있는 링과 뒤에 있는 링과 접하도록 바닥에 내려놓았다. 상근이는 첫 번째 링을 돌리기 시작했고, 나머지 링도 같이 돌아간다는 사실을 발견했다. 나머지 링은 첫 번째 링 보다 빠르게 돌아가기도 했고, 느리게 돌아가기도 했다. 이렇게 링을 돌리다 보니 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 도는지 궁금해졌다. 링의 반지름이 주어진다. 이때, 첫 번째 링을 한 바퀴 돌리면, www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있는 문제이다. N개의 링이 주.. 2019. 11. 28.
[백준] 2609번 : 최대공약수와 최소공배수(JAVA) https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를,둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있는 문제이다. 최대공약수(Greatest Common Divisor)와 최소공배수(Least Common Multiple)를 구하는 문제이다. GCD를 구하는 가장 쉬운 방법은 "유클리드 호제법"을 이용하는 것이다. LCM을 구하는 방법은 두 수의 곱과 두 수의 최대공약수를 이용하여 구할 수 있다. 여담으로 유클리드 호제법은 인류 최초의 알고리즘이라고 .. 2019. 11. 27.