반응형
- 문제
- 풀이
문제
https://school.programmers.co.kr/learn/courses/30/lessons/118666
문제 내용은 지적 재산 보호 차원에서 가져오지 않고 풀이만 공유드리도록 하겠습니다.
풀이
제 풀이가 무조건적으로 맞는 것도 최적의 답변도 아니지만, 이런 풀이도 있다는 차원에서 작성해 보며, 좀 더 나은 방법이 있다면 이야기해 주셔도 도움 될 것 같습니다.
import java.util.HashMap;
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
int midScore = 4; // 기준점수
// 유형별 점수
HashMap<Character, Integer> map = new HashMap<>();
// 1번 지표
map.put('R', 0); // 라이언형
map.put('T', 0); // 튜브형
// 2번 지표
map.put('C', 0); // 콘형
map.put('F', 0); // 프로도형
// 3번 지표
map.put('J', 0); // 제이지형
map.put('M', 0); // 무지형
// 4번 지표
map.put('A', 0); // 어피치형
map.put('N', 0); // 네오형
for(int idx = 0; idx < survey.length; idx++){
String type = survey[idx];
int choice = choices[idx];
// Cond. 비동의인 경우
if(choice < midScore){
char ch = type.charAt(0);
int score = midScore - choice;
// System.out.println(ch + " " + score);
map.put(ch, map.get(ch) + score);
// Cond. 동의인 경우
}else if(choice > midScore){
char ch = type.charAt(1);
int score = choice - midScore;
// System.out.println(ch + " " + score);
map.put(ch, map.get(ch) + score);
}
}
// 1번 지표
// 튜브형(T) 점수가 높은 경우
if(map.get('R') < map.get('T')) answer += "T";
// 라이언형(R) 점수가 높거나 동일한 경우(사전순)
else answer += "R";
// 2번 지표
// 프로도형(F) 점수가 높은 경우
if(map.get('C') < map.get('F')) answer += "F";
// 콘형(C) 점수가 높거나 동일한 경우(사전순)
else answer += "C";
// 3번 지표
// 무지(M) 점수가 높은 경우
if(map.get('J') < map.get('M')) answer += "M";
// 제이지형(J) 점수가 높거나 동일한 경우(사전순)
else answer += "J";
// 4번 지표
// 네오형(N) 점수가 높은 경우
if(map.get('A') < map.get('N')) answer += "N";
// 어피치형(A) 점수가 높거나 동일한 경우(사전순)
else answer += "A";
return answer;
}
}
반응형
'개발 창고 > Algorithm' 카테고리의 다른 글
[프로그래머스] 숫자 짝궁 - JAVA (59) | 2024.03.22 |
---|---|
[백준] 1004 어린 왕자 - JAVA (52) | 2024.03.20 |
[백준] 1003번 피보나치 함수 - JAVA (32) | 2024.03.19 |
[백준] 1002번 터렛 - JAVA (40) | 2024.03.18 |
[백준] 1001번 A - B - JAVA (45) | 2024.03.15 |