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

 

코딩테스트 연습 - 4주차

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

programmers.co.kr

 

 

import java.util.*;

class Solution {
    public String solution(String[] table, String[] languages, int[] preference) {
        String answer = "";        
        
        Arrays.sort(table); // 나중에 사전순으로 빠른 직업군을 찾기 위해서 미리 정렬
        List<String> lang = Arrays.asList(languages);   // 개발자가 선호하는 언어 List
        
        int[] score = new int[5];	// 직업군별 점수 기록용
        String[] jobs = new String[5];  // 직업군
        
        // 직업군 별 점수 집계
        for (int i = 0; i < table.length; i++) {			
			String[] jobLan = table[i].split(" ");
			jobs[i] = jobLan[0];    // 직업군을 jobs 배열에 기록 [CONTENTS, GAME, HARDWARE, PORTAL, SI]
			int subScore = 0;	// 각 직업군별 총 점수 기록
			for (int j = 1; j < jobLan.length; j++) {				
				if(lang.indexOf(jobLan[j]) != -1) {	// 각 직업군에 개발자의 선호 언어가 있으면 (없으면 -1 반환)
					subScore += (6 - j) * preference[lang.indexOf(jobLan[j])];  // 직업군별 언어 점수 * 언어선호도 합계 계산
				}				
			}
			score[i] = subScore;    // 직업군별 점수 기록
		}      
        
        // 최고점
        int maxScore = 0;
        for (int i = 0; i < score.length; i++) {
			if(maxScore < score[i]) {
				maxScore = score[i];
			}
		}
    
        // jobs에 직업군이 사전순 정렬되 있으므로, 최고점 찾으면 바로 끝냄
        for (int i = 0; i < score.length; i++) {
			if(maxScore == score[i]) {
				answer = jobs[i];
				break;
			}
		}
        
        return answer;
    }
}