Study hard
swea 3752. 가능한 시험 점수 본문
[문제]
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[풀이]
처음엔 set을 써서 dfs로 조합을 구하는 방식으로 풀려고 했지만 시간 초과가 떴다.
그래서 for문만 써서 아직 나오지 않은 점수만 vector에 넣는 방식으로 풀었다.
#include <iostream>
#include <vector>
#include <cstring>//memset
using namespace std;
bool check[10001];
int T, N;
vector<int>score;
void solution() {
cin >> T;
for (int t = 1; t <= T; t++) {
memset(check, false, sizeof(check));
cin >> N;
score.push_back(0);
check[0] = true;
int s;
for (int i = 0; i < N; i++) {
cin >> s;//배점
int sSize = score.size();
for (int j = 0; j < sSize; j++) {
int newScore = score[j] + s;//새롭게 더해진 점수
//해당 점수가 이미 있으면
if (check[newScore])
continue;
score.push_back(newScore);
check[newScore] = true;
}
}
cout << '#' << t << ' ' << score.size() << '\n';
score.clear();
}
}
int main() {
solution();
return 0;
}
'SW Expert Academy' 카테고리의 다른 글
swea 1861. 정사각형 방 (0) | 2020.09.26 |
---|---|
swea 1226. [S/W 문제해결 기본] 7일차 - 미로1 (0) | 2020.09.26 |
swea 1824. 혁진이의 프로그램 검증 (0) | 2020.09.25 |
swea 1249. [S/W 문제해결 응용] 4일차 - 보급로 (0) | 2020.09.25 |
swea 2819. 격자판의 숫자 이어 붙이기(c++) (0) | 2020.09.24 |