[PCCP 모의고사 #1] 1번 - 외톨이 알파벳
풀이
dp를 사용해서 풀다가 뇌정지&스트레스가 와서 갈아엎고 dfs방식으로 풀었다.
나의 틀린 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <vector>
#include <algorithm>
using namespace std;
int maxScore = 0; // 최대 능력치 합을 저장할 변수
// dfs
void dfs(vector<vector<int>>& ability, vector<bool>& visited, int depth, int score, int n, int m) {
if (depth == m) { // 모든 종목에 대해 대표를 선발했다면
maxScore = max(maxScore, score); // 최대 능력치 합 갱신
return;
}
for (int i = 0; i < n; ++i) { // 모든 학생에 대해 반복
if (!visited[i]) {
visited[i] = true;
dfs(ability, visited, depth + 1, score + ability[i][depth], n, m); // 다음 종목에 대해 dfs 진행
visited[i] = false;
}
}
}
int solution(vector<vector<int>> ability) {
int n = ability.size(); // 학생 수
int m = ability[0].size(); // 종목 수
vector<bool> visited(n, false);
maxScore = 0;
dfs(ability, visited, 0, 0, n, m); // dfs 탐색 시작
return maxScore;
}