반응형
728x170
이 문제는 쉬웠지만 시간초과가 나는 이유를 간과했다.
분명 순서가 쓸모 없음에도.. 나는 순서를 고려하여 세지 않아도 되는
경우의 수까지 고려해서 시간 초과가 난 것이다.
그냥 무지성 백트래킹을 박아버렸다.
https://www.acmicpc.net/problem/16922
#맞은 풀이
#include <bits/stdc++.h>
using namespace std;
set<int> counts;
vector<int> vec = {1,5,10,50};
// 최대 카운트, 현재 카운트, 현재 문자, 결과합
void func(int maxi, int cnt, int idx, int res){
if(cnt >= maxi){
counts.insert(res);
return;
}
//문자의 순서는 상관없으므로 각 문자의 개수만 고려한다.
//1번문자 a개 2번문자 b개 등...
for(int i=idx; i<4; i++){
func(maxi, cnt+1, i, res + vec[i]);
}
}
int main(){
int n;
cin >> n;
func(n, 0, 0, 0);
long long ans = counts.size();
cout << ans << '\n';
return 0;
}
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 20002번, 캠프 준비 C++ [CPP] ★★★★★ (0) | 2022.08.25 |
---|---|
백준, BOJ, 16938번, 캠프 준비 C++ [CPP] ★★ (0) | 2022.08.25 |
백준, BOJ, 17404번, RGB거리 2 C++ [CPP] ★★★ (0) | 2022.08.14 |
백준, BOJ, 1107번, 리모컨 C++ [CPP] ★★★★ (0) | 2022.08.07 |
백준, BOJ, 1741번, 괄호제거 C++ [CPP] ★★★★ (0) | 2022.07.31 |