반응형
풀이
1. 직업군 언어 점수 문자열은 공백으로 위치가 정해져 있기 때문에 split 함수를 이용해서 배열로 만들어냅니다.
2. 직업군 언어 배열(table을 split 한 배열)과 개발자 언어 선호도 배열 (languages, preference 배열)은 문자열임으로 equals 함수를 이용해서 비교합니다
3. 점수가 같을 경우 사전순으로 가장 빠른 직업군을 return이라는 조건이 있음으로 compareTo 함수를 이용해서 문자열을 사전순으로 비교합니다.
"SI".compareTo("PORTAL") -> 3
SI 문자열은 PORTAL 문자열보다 사전순으로 뒤에 있으므로 양수
"PORTAL".compareTo("SI") -> -3
PORTAL 문자열은 SI 문자열보다 사전순으로 앞에 있으므로 음수
코드
class Solution {
public String solution(String[] table, String[] languages, int[] preference) {
int max = 0;
String maxJob = "";
for (int i = 0; i < table.length; i++) {
String jobLang[] = table[i].split(" ");
String job = "";
int sum = 0;
for (int j = 0; j < jobLang.length; j++) {
int score = jobLang.length - j;
//0번째 직업군 이름
if (j == 0) {
job = jobLang[j];
continue;
}
//직업군 언어와 개발자언어가 같은 경우 점수 계산
for (int k = 0; k < languages.length; k++) {
if (languages[k].equals(jobLang[j])) {
sum += preference[k] * score;
}
}
}
//점수가 가장 크거나 같을때
if (max <= sum) {
//점수가 같으면 사전순으로 비교 (음수일 경우 사전순으로 더 빠르기 때문에 스킵)
if (max == sum) {
if (maxJob.compareTo(job) < 0) {
continue;
}
}
max = sum;
maxJob = job;
}
}
//System.out.println(maxJob + " : " + max);
return maxJob;
}
}
출처
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 2주차 상호 평가 자바 java (0) | 2021.08.24 |
---|---|
프로그래머스 소수 만들기 자바 java (0) | 2021.08.23 |
프로그래머스 숫자 문자열과 영단어 자바 java (0) | 2021.08.19 |
프로그래머스 실패율 자바 java (0) | 2021.06.16 |
프로그래머스 약수의 개수와 덧셈 자바 java (0) | 2021.06.15 |
댓글