dp(9)
-
[백준/1003/Java] 피보나치 함수 - 2가지 풀이법
문제: www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제분석 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수입니다. 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(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)..
2021.04.03 -
[백준/9095/Java] 1, 2, 3 더하기
문제: www.acmicpc.net/problem/9095 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보다 작습니다. 출력 각 테스..
2021.03.28 -
[백준/1463/Java] 1로 만들기 - DP 풀이
문제 www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제를 먼저 풀고 오시는 것을 추천합니다. 이 문제의 풀이는 DP(Dynamic Programming) 외에도 다양한 방법이 있을 수 있으며 제가 보여드리는 풀이는 그 중 하나입니다. 문제분석 정수 X에 사용할 수 있는 연산은 세가지입니다. ① 1을 뺀다. -> X가 어떤 수이든지 1을 뺄 수 있다. ② X가 2로 나누어 떨어지면, 2로 나눈다. ③ X가 3으로 나누어 떨어지면 3으로 나눈다. 실제 문제와 다르게 알아보기 쉽게 하기 위하여 1번은 1 빼기, 2번은 2로 나누기, 3번은 3으로 나누기로 재정리하였습니다. ..
2021.02.04