프로그래머스/LEVEL1
[프로그래머스] 성격 유형 검사하기 - JAVA(자바)
딘딘은딘딘
2023. 9. 15. 13:04
반응형
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 : 2022 KAKAO TECH INTERNSHIP 성격 유형 검사하기
- 설명 : 검사 결과는 모든 질문의 성격 유형 점수를 더하여 각 지표에서 더 높은 점수를 받은 성격 유형이 검사자의 성격 유형이라고 판단합니다. 단, 하나의 지표에서 각 성격 유형 점수가 같으면, 두 성격 유형 중 사전 순으로 빠른 성격 유형을 검사자의 성격 유형이라고 판단합니다.
질문마다 판단하는 지표를 담은 1차원 문자열 배열 survey와 검사자가 각 질문마다 선택한 선택지를 담은 1차원 정수 배열 choices가 매개변수로 주어집니다. 이때, 검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return 하도록 solution 함수를 완성해주세요.
.......
너무 길어 생략 (링크 참고) - 풀이 :
import java.util.stream.Collectors;
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
List<Map<String, Integer>> mapList = new ArrayList<>();
Map<String, Integer> mapRT = new HashMap<>();
Map<String, Integer> mapCF = new HashMap<>();
Map<String, Integer> mapJM = new HashMap<>();
Map<String, Integer> mapAN = new HashMap<>();
mapRT.put("R" , 0);
mapRT.put("T" , 0);
mapList.add(mapRT);
mapCF.put("C" , 0);
mapCF.put("F" , 0);
mapList.add(mapCF);
mapJM.put("J" , 0);
mapJM.put("M" , 0);
mapList.add(mapJM);
mapAN.put("A" , 0);
mapAN.put("N" , 0);
mapList.add(mapAN);
for(int i=0; i<survey.length; i++) {
String chart = survey[i];
int choise = choices[i];
String addStr = "";
if(choise < 4) {
addStr = String.valueOf(chart.charAt(0));
switch (addStr) {
case "R" :
case "T" :
mapList.get(0).put(addStr, mapList.get(0).get(addStr) + (4 - choise));
break;
case "C" :
case "F" :
mapList.get(1).put(addStr, mapList.get(1).get(addStr) + (4 - choise));
break;
case "J" :
case "M" :
mapList.get(2).put(addStr, mapList.get(2).get(addStr) + (4 - choise));
break;
case "A" :
case "N" :
mapList.get(3).put(addStr, mapList.get(3).get(addStr) + (4 - choise));
break;
}
} else if(choise > 4) {
addStr = String.valueOf(chart.charAt(1));
switch (addStr) {
case "R" :
case "T" :
mapList.get(0).put(addStr, mapList.get(0).get(addStr) + (choise - 4));
break;
case "C" :
case "F" :
mapList.get(1).put(addStr, mapList.get(1).get(addStr) + (choise - 4));
break;
case "J" :
case "M" :
mapList.get(2).put(addStr, mapList.get(2).get(addStr) + (choise - 4));
break;
case "A" :
case "N" :
mapList.get(3).put(addStr, mapList.get(3).get(addStr) + (choise - 4));
break;
}
}
}
String answer = "";
for(Map<String, Integer> m : mapList) {
answer = answer + m.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toList())
.get(0)
.getKey();
}
return answer;
}
}
반응형