알고리즘/프로그래머스

[PCCP 모의고사 #1] 2번 - 체육대회

베리영young 2024. 12. 2. 04:23

사용 알고리즘: 순조부 순열

사용 언어: java

 

import java.util.*;

class Solution {
    int 학생수, 종목수, answer;
    
    public int solution(int[][] ability) {
        학생수 = ability.length;
        종목수 = ability[0].length;
        
        int[] picks = new int[종목수];
        boolean[] visit = new boolean[학생수];
        permu(0 ,picks,visit, ability);
        
        return answer;
    }
    
    public void permu(int idx, int[] picks,boolean[] visit, int[][] ability) {
        if(idx == 종목수) {
            int sum =0;
            for(int p : picks)
                sum += p;
            answer = Math.max(answer, sum);
            return;
        }
        
        //
        for(int i=0; i<학생수; i++) {
            if(!visit[i]) {
                visit[i] = true;
                picks[idx] = ability[i][idx];
                permu(idx+1, picks,visit, ability);
                picks[idx] = 0;
                visit[i] = false;
            }
        }
    }
}

 

스무스~하게