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;
}
}
'JAVA > 프로그래머스' 카테고리의 다른 글
32. LEVEL1 - 비밀지도 (0) | 2021.08.26 |
---|---|
32. LEVEL1 - 키패드 누르기 (0) | 2021.08.26 |
30. LEVEL 1 - 숫자 문자열과 영단어 (0) | 2021.08.25 |
29. LEVEL 2 - 거리두기 확인하기 - BFS (0) | 2021.08.25 |
28. LEVEL 2 - 큰 수 만들기- Greedy (0) | 2021.08.17 |