본문 바로가기
알고리즘/프로그래머스

프로그래머스 위클리 챌린지 4주차 (자바)

by reumiii 2021. 9. 6.

🍀 문제

직업군 언어 점수를 정리한 문자열 배열 table, 개발자가 사용하는 언어를 담은 문자열 배열 languages, 언어 선호도를 담은 정수 배열 preference가 매개변수로 주어집니다. 개발자가 사용하는 언어의 언어 선호도 x 직업군 언어 점수의 총합이 가장 높은 직업군을 return 하도록 solution 함수를 완성해주세요. 총합이 같은 직업군이 여러 개일 경우, 이름이 사전 순으로 가장 빠른 직업군을 return 해주세요.

 

 

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) {
        HashMap lan = new HashMap<String,Integer>();
        for(int i=0; i<languages.length; i++) {
            lan.put(languages[i],preference[i]);
        }

        String answer = "";
        int maxScore = 0;
        for(int i=0; i<table.length; i++){
            int score = 0;
            String job[] = table[i].split(" ");

            for(int j=1; j<=5; j++) {
                if(lan.containsKey(job[j])) {
                    score += (6-j) * (Integer)lan.get(job[j]);
                }
            }

            if(maxScore<score || (maxScore==score && answer.compareTo(job[0])>0)) {
                answer = job[0];
                maxScore = score;
            }
        }
        return answer;
    }
}

 

문제가 재밌었다ㅎㅎ

댓글