❓ 문제
정수 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의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.
✍🏻 JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] numbers = scannerFunc();
int[] dp = dpFunc();
for (int num : numbers) {
System.out.println(dp[num]);
}
}
private static int[] scannerFunc() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] numbers = new int[n];
for (int i = 0; i < n; i++) {
numbers[i] = sc.nextInt();
}
sc.close();
return numbers;
}
private static int[] dpFunc() {
int[] dp = new int[11];
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for (int i = 4; i <= 10; i++) {
dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1];
}
return dp;
}
}
✍🏻 Kotlin
import java.util.Scanner
fun main() {
val numbers = scan()
val dp = dp()
for (i in numbers.indices) println(dp[numbers[i]])
}
fun scan(): IntArray = with(Scanner(System.`in`)) {
val n = nextInt()
val numbers = IntArray(n) {nextInt()}
return numbers
}
fun dp() : IntArray {
val dp = IntArray(11)
dp[0] = 0
dp[1] = 1
dp[2] = 2
dp[3] = 4
for (i in 4 .. 10) dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1]
return dp
}
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준] 27210. 신을 모시는 사당 JAVA (0) | 2023.01.27 |
---|---|
[백준 알고리즘] 5597. 과제 안 내신 분..? (0) | 2022.12.15 |
[백준 알고리즘] 문제 25501번 : 재귀의 귀재 (0) | 2022.10.06 |
[백준 알고리즘] 문제 2869번 : 달팽이는 올라가고 싶다(JAVA) (0) | 2022.10.04 |
[백준 알고리즘] 문제 4673번 : 셀프 넘버 (JAVA) (0) | 2022.08.23 |
댓글