
코드
#include <iostream>
using namespace std;
int cnt = 0; // 전역 변수 -> n을 1, 2, 3의 합으로 나타내는 방법의 수
void DFS(int sum, int test) {
if (sum == test) { // 1,2,3의 합이 test 값과 같아지는 경우 방법의 수 증가
cnt++;
return;
}
if (sum > test) { // 1,2,3의 합이 test값보다 커지는 경우
return;
}
for (int i = 1; i <= 3; i++) {
DFS(sum + i, test); // 모든 1,2,3의 합의 조합 체크
}
}
int main()
{
cin.tie(0); // 코드를 작성하면 입출력 속도가 빨라진다. -> C와 C++ 표준 stream의 동기화를 비활성화
cout.tie(0); // C++의 입출력인 cin, cout만 사용하도록 주의해야합니다.
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int T;
cin >> T;
DFS(0, T);
cout << cnt << "\n";
cnt = 0;
}
return 0;
}
'C++ > 백준 C++' 카테고리의 다른 글
[C/C++] 백준 15649번 N과 M (1) - 참고 (2) | 2023.11.25 |
---|---|
[C/C++] 백준 1149번 RGB거리 - 참고 (2) | 2023.11.25 |
[C/C++] 백준 11659번 구간 합 구하기 4 - 참고 (2) | 2023.11.23 |
[C/C++] 백준 1182번 부분수열의 합 - 참고 (2) | 2023.11.23 |
[C/C++] 백준 1269번 대칭 차집합 (2) | 2023.11.22 |