[ 프로그래머스 ] 직업군 추천하기 JAVA

2021. 9. 17. 08:58알고리즘/프로그래머스

728x90
반응형

문제 설명


문제 풀이

class Solution {
    public String solution(String[] table, String[] languages, int[] preference) {
        String answer = "";
        int max = 0, idx = 0;
        for(int i=0; i<table.length; i++) {
            int sum = 0;
            for(int j=0; j<languages.length; j++) {
                String[] arr = table[i].split(" ");
                for(int k=1; k<arr.length; k++) {
                    if(arr[k].equals(languages[j])) {
                        sum += (6-k) * preference[j];
                    }
                }
                if(max < sum || (max == sum && table[i].compareTo(table[idx])<0)) {
                    max = sum;
                    idx = i;
                }
            }
        }
        answer = table[idx].split(" ")[0];
        return answer;
    }
}

table 배열의 원소를 공백으로 나눠서 String 배열인 arr에 저장했습니다.

이렇게 되면 0번째 원소는 직업군이 됩니다.

 

나머지 1번째 원소부터 languages 원소의 값과 일치할 경우 점수를 더해서 마지막에 최댓값 비교를 합니다.

 

max보다 크면 최댓값이고, max와 값이 같으면 사전 순으로 비교를 하도록 했습니다.

 

String.compareTo(anotherString)는 String이 anotherString보다 사전 순으로 빠를 경우 음수 값을 리턴합니다.

 

최댓값에 해당하는 인덱스를 저장하고 마지막에 table 배열의 idx 번째 원소를 공백으로 나눈 다음 0번째 원소를 출력하면 정답이 됩니다.

 

출처 : https://programmers.co.kr/learn/courses/30/lessons/84325

 

코딩테스트 연습 - 4주차_직업군 추천하기

개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부

programmers.co.kr

 

728x90
반응형