본문 바로가기

Java128

[백준] 1912번 연속합 JAVA (자바) 풀이 문제 1912번 (DP) :  n개의 정수로 이루어진 임의의 수열    연속된 몇 개의 수를 선택해서 가장 큰 합을 구해라 (1개 이상 선택)     예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열일 때 답은 12+21인 33이다  [입력] :  첫째 줄에 정수 n(1 ≤ n ≤ 100,000)    둘째 줄에는 n개의 정수로 이루어진 수열    (수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수)  [출력]  :  첫째 줄에 답을 출력  [설명] DP 알고리즘: 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단축시키는 방법  DP 구현 방법은 일반적으로 Top-down(하향식)과 Bottom-up(상향식).. 2024. 6. 30.
[백준] 1904번 01타일 JAVA (자바) 풀이 문제 1904번 (DP) : 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일   0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다  현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다  그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다  예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다 (01, 10은 만들 수 없게 되었다.)  또한 N=4일 때는 0011, 0000, 1001, 1100, 1111 등 총 5개의 2진 수열을 만들 수 있다  우리의 목표는 N이 주어졌을 때 지원이가 만들 수 있는 모든 가짓수를 세는 것  [입력] :  첫 번째 줄에 자연.. 2024. 6. 30.
[백준] 2193번 이친수 JAVA (자바) 풀이 문제 2193번 (DP) : 0과 1로만 이루어진 수를 이진수   이친수 특성이친수는 0으로 시작하지 않는다.이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다.   예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수 (하지만 0010101이나 101101 이친수가 아니다)   N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램  [입력] :  첫째 줄에 N  [출력]  :   첫째 줄에 N자리 이친수의 개수를 출력  [설명] DP 알고리즘: 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단축시키는 방법  DP 구현 방법은 일반적으로 Top-down(하향식)과 Bottom-up.. 2024. 6. 30.
[백준] 11727번 2×n 타일링 2 JAVA (자바) 풀이 문제 11727번 (DP) :  2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수     아래 그림은 2×17 직사각형을 채운 한가지 예   [입력] :  첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)  [출력] :  첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력 [설명] DP 알고리즘: 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단축시키는 방법  DP 구현 방법은 일반적으로 Top-down(하향식)과 Bottom-up(상향식)으로 구성된다 탑다운 (Top-Down) 보텀업 (Bottom-Up)작은 크기로 문제를 나눠서 해결작은 것부터 해결해서 점차 빌드업메모제이션 (memoization)타뷸.. 2024. 6. 30.
[백준] 9461번 파도반 수열 JAVA (자바) 풀이 문제 9461번 (DP) : 첫 삼각형은 정삼각형으로 변의 길이는 1  다음과 같은 과정으로 정삼각형을 계속 추가한다   가장 긴 변의 길이를 k라 할 때, 변 길이가 k인 정삼각형을 추가  파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이  P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다.  P(N)을 구하는 프로그램을 작성하시오  [입력] :  첫째 줄에 테스트 케이스의 개수 T    각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다 (1 ≤ N ≤ 100)   [출력] :  각 테스트 케이스마다 P(N)을 출력 [설명] DP 알고리즘: 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단축시키는 .. 2024. 6. 30.
[백준] 9655번 돌 게임 JAVA (자바) 풀이 문제 9655번 (수학, DP) : 탁자 위에 돌 N개   상근이와 창영이는 턴을 번갈아가면서 돌은 1개 또는 3개 가져갈 수 있다   마지막 돌을 가져가는 사람이 게임을 이기게 된다   게임은 상근이가 먼저 시작한다.  [입력] :  첫째 줄에 N (1 ≤ N ≤ 1000)   [출력] :  상근이가 이기면 SK를, 창영이가 이기면 CY을 출력  [설명] DP 알고리즘: 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단축시키는 방법  DP 구현 방법은 일반적으로 Top-down(하향식)과 Bottom-up(상향식)으로 구성된다 탑다운 (Top-Down) 보텀업 (Bottom-Up)작은 크기로 문제를 나눠서 해결작은 것부터 해결해서 점차 빌드업메모제이션 (memoi.. 2024. 6. 30.
[백준] 1010번 다리 놓기 JAVA (자바) 풀이 문제 1010번 (DP) :  도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다    :  다리를 짓기에 적합한 곳 = 사이트    강 서쪽 사이트 = N개, 동쪽 사이트 = M개 (N ≤ M)  :  한 사이트 - 한 다리 연결     크로스처럼 다리끼리 겹칠 수 없다  :  서쪽과 동쪽을 연결하는 다리를 지어라   [입력]  : 첫 줄에는 테스트 케이스의 개수 T : 그 다음 줄부터 서쪽과 동쪽의 있는 사이트의 개수 정수 N, M (0    [출력] : 다리를 지을 수 있는 경우의 수를 출력   [과정]  1:1로 연결해야하므로 최대 N개의 다리를 설치할 수 있다 단, 크로스처럼 다리가 겹쳐서는 안된다  크로스는 동쪽 다리의 인덱스가 순서대로 (이전 인덱스 되어야한다고 생각.. 2024. 6. 29.
[백준] 2579번 계단 오르기 JAVA (자바) 풀이 문제 2579번 (DP) : 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다 계단 오르는 규칙한 번에 한 계단씩 또는 두 계단씩 오르기연속된 세 개의 계단을 모두 밟아서는 안 된다 (단, 시작점은 미포함)마지막 도착 계단은 반드시 밟아야 한다총 점수의 최댓값을 구하는 프로그램을 작성하시오    [입력] :  입력의 첫째 줄에 계단의 개수    둘째 줄부터 한 줄에 하나씩 계단 점수    (계단 개수는 300이하의 자연수, 계단 점수는 10,000이하의 자연수) [출력] :  첫째 줄에 계단 오르기 게임에서 얻을 수 있는 총 점수의 최댓값을 출력 [설명] DP 알고리즘: 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단.. 2024. 6. 29.
[백준] 1003번 피보나치 함수 JAVA (자바) 풀이 문제 1003번 (DP)int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); }} fibonacci(3) = fibonacci(2)와 fibonacci(1) fibonacci(2) = fibonacci(1)과 fibonacci(0)    [입력] :  첫째 줄에 테스트 케이스의 개수 T    각 테스트 케이스에 N이 주어진다 ( N은 40보다 작거나 같은 자연수 또는 0)  [출력] :  각 테스트 케이스.. 2024. 6. 29.
[백준] 9095번 1, 2, 3 더하기 JAVA (자바) 풀이 문제 9095번 (DP) : 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지   합을 나타낼 때는 수를 1개 이상 사용1+1+1+11+1+21+2+12+1+12+21+33+1정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.    [입력] :  첫째 줄에 테스트 케이스의 개수 T    각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다 ( n은 양수이며 11보다 작다)  [출력] :  각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력[설명] DP 알고리즘: 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단축시키는 방법  DP 구현 방법은 일반적으로 Top-do.. 2024. 6. 29.