알고리즘

PCCP 모의고사 1회 : 체육대회

류창 2022. 9. 18. 19:11
반응형

 

문제 분석

 

종목마다 체육대회 대표를 뽑아서  능력치 합을 최대로 높게만드는 문제다.

 

어떤 알고리즘을 쓸까 고민하다가 역시 DFS,BFS 완전탐색뿐인것 같았다.

 

선수들은 중복으로 대표를 선정할수없으니,  Visited배열로  사용여부를 체크해주자.

 

그 뒤, 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
33
import java.util.*;
class Solution {
    
boolean[] visited;
int scope;
int total=0;
    
    public int solution(int[][] ability) {
        //유저수
        visited=new boolean[ability.length];
        //종목수
        scope=ability[0].length;
        
        dfs(ability,0,0);       
        return total;
    }
    
    public void dfs(int[][] ability,int start,int sum){
        
        if(start==scope){
            total=Math.max(total,sum);
            return;
        }
        
        for(int i=0;i<ability.length;i++){
            if(!visited[i]){
                visited[i]=true;
                dfs(ability,start+1,sum+ability[i][start]);
                visited[i]=false;
            }          
        }
    }
}
cs
반응형

'알고리즘' 카테고리의 다른 글

PCCP 모의고사 1회 : 유전법칙  (0) 2022.09.18
PCCP 모의고사 1회: 외톨이 알파벳  (0) 2022.09.18