문제 풀이
-
[Baekjoon Online Judge] 1932번: 정수 삼각형문제 풀이/Baekjoon Online Judge 2021. 2. 1. 11:21
1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 요구사항 - 맨 위층 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성한다. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 입력 - 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 - 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 상각형의 밑단에서 부터 dp 테이블을 채우고, 그중에 최대값..
-
[Baekjoon Online Judge] 2579번: 계단 오르기문제 풀이/Baekjoon Online Judge 2021. 1. 30. 18:07
2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 요구사항 - 계단 오르는 데는 다음과 같은 규칙이 있다. - 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밝으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. - 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. - 마지막 도착 계단은 반드시 밟아야 한다. - 각 계단에 쓰여 있는 점수가 주어질 때 이 게임에서 얻을 수 있는 총 점수의 최대값을 구한다. 입력 - 입력의 첫째 줄에 계단의 개수가..
-
[Baekjoon Online Judge] 1149번: RGB거리문제 풀이/Baekjoon Online Judge 2021. 1. 30. 17:46
1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 요구사항 - RGB 거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. - 집은 R, G, B 중 하나의 색으로 칠해야 한다. 각각의 집을 R, G, B 로 칠하는 비용이 주저였을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구한다. - 1번 집의 색은 2번 집의 색과 같지 않아야 한다. - N번 집의 색은 N - 1번 집의 색과 같지 않아야 한다. - i (2
-
[Baekjoon Online Judge] 11726번: 2xn 타일링문제 풀이/Baekjoon Online Judge 2021. 1. 30. 17:36
11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 요구사항 - 2 x n 크기의 직사각형을 1 x 2, 2 x 1 타일로 채우는 방법의 수를 구한다. 입력 - 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 - 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 점화식을 구하기 위해 실제로 타일을 그려보았다. 규칙을 찾았고, 적용하여 코드를 작성하였다. 한 가지 더 고려 해야 할 점은 채우는 방법의 수를 10007로 나눈 나머지를 dp 테이블에 저장한다. n의 크기가 커질 수록 ..
-
[Baekjoon Online Judge] 1003번: 피보나치 함수문제 풀이/Baekjoon Online Judge 2021. 1. 29. 01:11
1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 요구사항 - fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacci(0)은 0을 출력하고, 0을 리턴한다. fibonacci(2)는 fibonacci(1)과 fibonacci(0)의 결과를 얻고, 1을 리턴한다. 첫 번째 호출한 fibonacci(1)은 1을 ..
-
[Baekjoon Online Judge] 9095번: 1, 2, 3 더하기문제 풀이/Baekjoon Online Judge 2021. 1. 28. 23:54
9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 요구사항 - 정수 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보다 작다. 출력 - 각 테스트 케이스마다, n을 1,..
-
[Baekjoon Online Judge] 1463번: 1로 만들기문제 풀이/Baekjoon Online Judge 2021. 1. 27. 21:58
1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 요구사항 - 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지이다. 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. - 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 쵯솟값을 출력한다. 입력 - 첫째 줄에 1보다 크거나 같고, 10^6보다 작거나 같은 정수 N이 주어진다. 출력 - 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. import java.io.BufferedReader; import java.io.BufferedWriter;..
-
[다이나믹 프로그래밍] Dynamic programming문제 풀이/Baekjoon Online Judge 2021. 1. 27. 21:17
1. 다이나믹 프로그래밍이란? 큰 문제의 해답에 작은 문제의 해답이 포함되어 있고, 이를 재귀 호출 알고리즘으로 구현하면 지나친 중복이 발생할 수 있기 때문에 재귀적 중복을 해결하는 방법이다. 간단하게 말하면 작은 문제들의 값을 저장하여 재사용하는 것이다. 다이나믹 프로그래밍이라는 표기를 보면 큰 연관이 없어보이는데, 이광근 교수의 저서 "컴퓨터 과학이 여는 세계"에서는 다이나믹 프로그래밍을 기억하며 풀기로 번역하였다고 한다. 2. 다이나믹 프로그래밍의 예 다이나믹 프로그래밍의 예로는 피보나치 수열이 있다. 피보나치 수는 다음과 같이 정의할 수 있다. f(n) = f(n - 1) + f(n - 2) f(1) = f(2) = 1 n의 피보나치 수에는 n - 1과 n - 2의 피보나치 수를 포함하는 것을 알..