반응형
1. 문제 정의
2. 문제 접근
한명에 한 능력치씩 골라 능력치의 최대 합산을 구하는 완전탐색으로 풀면 될 것 같다.
3. 문제 풀이
- dfs를 정의한다.
- 원하는 횟수만큼 반복할때 마다 정답을 갱신한다.
- dfs가 끝나고 정답을 출력한다.
4. 코드
import java.util.*;
class Solution {
static int answer = 0;
static int number_student, number_evnet;
static boolean[] check_student;
public void dfs(int k,int sum, int[][] ability) {
if(k == number_evnet){
answer = Math.max(answer, sum);
} else {
for(int i = 0; i < number_student; i++) {
if(!check_student[i]) {
check_student[i] = true;
dfs(k+1, sum + ability[i][k], ability);
check_student[i] = false;
}
}
}
}
public int solution(int[][] ability) {
check_student = new boolean[ability.length];
number_student = ability.length;
number_evnet = ability[0].length;
dfs(0, 0, ability);
return answer;
}
}
5. 회고
반복횟수와 몇번째 종목인지 선택하는 인덱스 변수 값이 같은 값으로 해야한다는것을 늦게 깨달았다. 완전 탐색 관련 문제는 정형화 된 틀이 있지만 많이 풀어봐야 겠다.
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
PCCP 모의고사 2회 - 카페 확장 (1) | 2023.02.18 |
---|---|
PCCP 모의고사 2회 - 신입사원 교육 (0) | 2023.02.18 |
PCCP 모의고사 2회 - 실습형 로봇 (0) | 2023.02.18 |
PCCP 모의고사 1회 - 유전법칙 (0) | 2023.02.18 |
PCCP 모의고사 1회 - 외톨이 알파벳 (0) | 2023.02.16 |