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

직업군 추천하기

by 김어찐 2021. 9. 3.
728x90
package prog;

import java.util.Arrays;
import java.util.HashMap;
import java.util.StringTokenizer;

public class 직업군_추천하기 {
    public static void main(String[] args) {
        SolutionC s = new SolutionC();
        System.out.println(
                s.solution(new String[] {"SI JAVA JAVASCRIPT SQL PYTHON C#", "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++", "HARDWARE C C++ PYTHON JAVA JAVASCRIPT", "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP", "GAME C++ C# JAVASCRIPT C JAVA"},
                        new String[] {"PYTHON", "C++", "SQL"},
                        new int[] {7, 5, 5}
                )
        );
    }
}

class SolutionC{
    static int row;
    static int col= 5;

    public String solution(String[] table, String[] languages, int[] preference) {
        String answer = "";
        StringTokenizer st = new StringTokenizer(table[0]," ");
        row = table.length;
        col = st.countTokens();
        HashMap<String,Integer> dict = new HashMap<>();
        String[][] board = new String[row][col];
        for (int i = 0; i < table.length; i++) {
            st = new StringTokenizer(table[i]," ");
            String team = st.nextToken();
            board[i][0]=team;
            dict.put(team,0);
            for (int j = 1; j < col; j++) {
                board[i][j] = st.nextToken();
            }
        }


        for (int i = 0; i < row; i++) {
            for (int j = 1; j < col; j++) {
                for (int z=0;z<preference.length; z++) {
                    if(languages[z].equals(board[i][j])){
                        dict.put(board[i][0],dict.get(board[i][0]) + (col-j)*preference[z]);
                    }
                }
            }

        }

        Team[] teamList = new Team[row];
        // teamList =[(HARDWARE,10),(SI, 5)]
        int idx=0;
        for(String ky: dict.keySet())
        {
            teamList[idx]=new Team(ky,dict.get(ky));
            idx++;
        }

        Arrays.sort(teamList);
        return teamList[0].name;
    }
}
class Team implements Comparable<Team>{
    String name;
    int score;

    public Team(String name, int score) {
        this.name = name;
        this.score = score;
    }

    @Override
    public int compareTo(Team o) {
        if(this.score!=o.score) return -(this.score-o.score);
        else{
            return this.name.compareTo(o.name);
        }
    }
}
728x90

'알고리즘 > 프로그래머스' 카테고리의 다른 글

단체사진찍기  (0) 2021.09.04
카카오 프렌즈 컬러링북  (0) 2021.09.03
오픈채팅방  (0) 2021.09.03
문자열 압축  (0) 2021.09.03
2주차  (0) 2021.08.31