[Baekjoon][C++] 9095λ² 1, 2, 3 λνκΈ° λ¬Έμ μ€λͺ λ° μ½λ
β· λ¬Έμ μ€λͺ
9095λ²: 1, 2, 3 λνκΈ°
κ° ν μ€νΈ μΌμ΄μ€λ§λ€, nμ 1, 2, 3μ ν©μΌλ‘ λνλ΄λ λ°©λ²μ μλ₯Ό μΆλ ₯νλ€.
www.acmicpc.net
μ μ nμ΄ μ£Όμ΄μ‘μ λ, nμ 1, 2, 3μ ν©μΌλ‘ λνλ΄λ λ°©λ²μ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλ λ¬Έμ
μ΄ λ, nμ λ²μλ 1<=n<=10μ΄λ€.
β· λ¬Έμ νμ΄
Nμ΄ 10λ³΄λ€ μκ±°λ κ°μ μμμ΄κΈ° λλ¬Έμ Nμ μ΅λ 10κ° μ΄νμ 1,2,3μ μλ‘ ννμ΄ κ°λ₯νλ€.
1+1+1+1+1+1+1+1+1+1 = 10
1) 10μ€ forλ¬Έμ νμ©νμ¬ ν μ리μ νλμ© κ°μ λμ ν΄λ³΄λ©΄μ nμ κ°κ³Ό κ°μμ§λ₯Ό νμΈνλ€.
nμ κ°κ³Ό κ°λ€λ©΄ ν΄λΉ κ²½μ°λ μ¬λ°λ₯Έ κ²½μ°μ μλ―λ‘ λ°©λ²μ μλ₯Ό countνλ€.
2) μ¬κ·ν¨μλ₯Ό νμ©νμ¬ μΈμλ‘ sum, goal κ°μ 보λ΄κ³ λμμ¬ λ(μ¬κ·ν¨μ return)λ§λ€ count νλ€.
β· μκ°λ³΅μ‘λ
3κ°μ§ κ²½μ°μ μλ₯Ό 10λ² λνλ©΄ λλ―λ‘ O(3*10) = O(1)μ μκ°λ³΅μ‘λλ₯Ό κ°λλ€.
β· μ λ΅μ½λ
#include <iostream>
#include <vector>
using namespace std;
void Input();
int PresentSum(int T, int v);
int main() {
Input();
return 0;
}
void Input() {
int T = 0;
cin >> T;
for (int t = 0; t < T; t++) {
int num = 0;
cin >> num;
cout << PresentSum(T, num) << endl;
}
}
int PresentSum(int T, int num) {
for (int t = 0; t < T; t++) {
int count = 0;
for (int l1 = 1; l1 <= 3; l1++) {
if (l1 == num) {
count++;
}
for (int l2 = 1; l2 <= 3; l2++) {
if (l1 + l2 == num) {
count++;
}
for (int l3 = 1; l3 <= 3; l3++) {
if (l1 + l2 + l3 == num) {
count++;
}
for (int l4 = 1; l4 <= 3; l4++) {
if (l1 + l2 + l3 + l4 == num) {
count++;
}
for (int l5 = 1; l5 <= 3; l5++) {
if (l1 + l2 + l3 + l4 + l5 == num) {
count++;
}
for (int l6 = 1; l6 <= 3; l6++) {
if (l1 + l2 + l3 + l4 + l5 + l6 == num) {
count++;
}
for (int l7 = 1; l7 <= 3; l7++) {
if (l1 + l2 + l3 + l4 + l5 + l6 + l7 == num) {
count++;
}
for (int l8 = 1; l8 <= 3; l8++) {
if (l1 + l2 + l3 + l4 + l5 + l6 + l7 + l8 == num) {
count++;
}
for (int l9 = 1; l9 <= 3; l9++) {
if (l1 + l2 + l3 + l4 + l5 + l6 + l7 + l8 + l9 == num) {
count++;
}
for (int l10 = 1; l10 <= 3; l10++) {
if (l1 + l2 + l3 + l4 + l5 + l6 + l7 + l8 + l9 + l10 == num) {
count++;
}
}
}
}
}
}
}
}
}
}
}
return count;
}
}
#include <iostream>
using namespace std;
int PresentSum(int sum, int goal);
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
cout << go(0, n) << '\n';
}
return 0;
}
int PresentSum(int sum, int goal) {
if (sum > goal) {
return 0;
}
if (sum == goal) {
return 1;
}
int count = 0;
for (int i = 1; i <= 3; i++) {
count += go(sum + i, goal);
}
return now;
}