[ 프로그래머스 ] 직업군 추천하기 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
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 ] 복서 정렬하기 JAVA (0) | 2021.10.01 |
---|---|
[ 프로그래머스 ] 모음사전 JAVA (0) | 2021.09.30 |
[ 프로그래머스 ] 상호평가 JAVA (0) | 2021.09.09 |
[ 프로그래머스 ] 부족한 금액 계산하기 JAVA (0) | 2021.09.09 |
[ 프로그래머스 ] 전화번호 목록 C++ 해시 (0) | 2020.01.04 |