문제
지표 번호성격 유형
1번 지표 | 라이언형(R), 튜브형(T) |
2번 지표 | 콘형(C), 프로도형(F) |
3번 지표 | 제이지형(J), 무지형(M) |
4번 지표 | 어피치형(A), 네오형(N) |
choices뜻
1 | 매우 비동의 |
2 | 비동의 |
3 | 약간 비동의 |
4 | 모르겠음 |
5 | 약간 동의 |
6 | 동의 |
7 | 매우 동의 |
입출력 예
survey | choices | result |
["AN", "CF", "MJ", "RT", "NA"] | [5, 3, 2, 7, 5] | "TCMA" |
["TR", "RT", "TR"] | [7, 1, 3] | "RCJA" |
코드
package solution;
import java.util.HashMap;
import java.util.Map;
class Solution {
//점수 저장 맵
Map<Character, Integer> surveyMap = new HashMap<>();
// 설문지에 맞는 점수배열, 앞에 아무숫자를 넣어 배열보정을 하면 나중에 -1 을 안해도된다.
int[] scoreArr = {0,3,2,1,0,1,2,3};
String[] survey;
int[] choices;
public static void main(String[] args) {
Solution solution = new Solution();
String[] survey = {"AN", "CF", "MJ", "RT", "NA"};
int[] choices = {5, 3, 2, 7, 5};
System.out.println(solution.solution(survey, choices));
}
public String solution(String[] survey, int[] choices) {
this.survey = survey;
this.choices = choices;
//맵 초기화
for(char key : "RTCFJMAN".toCharArray()) {
surveyMap.put(key, 0);
}
//검사지에 따른 점수 계산
for(int i=0; i<survey.length;i++) {
String tmp = survey[i];
char l = tmp.charAt(0);
char r = tmp.charAt(1);
calculate(l,r,i);
}
return result();
}
private String result() {
StringBuilder sb =new StringBuilder();
// 조건식 수정을 하면 동일할 경우 무엇을 리턴할지를 결정할 수 있다.
sb.append( sum('R','T')>=0?"R" : "T");
sb.append( sum('C','F')>=0?"C" : "F");
sb.append( sum('J','M')>=0?"J" : "M");
sb.append( sum('A','N')>=0?"A" : "N");
System.out.println(surveyMap);
return sb.toString();
}
//점수를 계산한다.
private void calculate(char l,char r, int i) {
if(choices[i]<4) {
accumulateValue(l, scoreArr[choices[i]]);
}else {
accumulateValue(r, scoreArr[choices[i]]);
}
}
//계산된 결과에 따라 점수를 누산한다.
private void accumulateValue(char key, int value) {
surveyMap.put(key, surveyMap.get(key)+value);
}
private int sum(char l,char r) {
return surveyMap.get(l) - surveyMap.get(r);
}
}
결과
{A=1, R=0, C=1, T=3, F=0, J=0, M=2, N=1}
TCMA
choices 인자가 1~7 가 오는데, 그에 따른 점수는 3, 2,1, 0, 1, 2, 3 이다.
이를 보정하기 위해 choices 배열 크기에 맞는 점수 배열을 별도로 만들면, 좋다.
'자료구조&알고리즘 > Level1' 카테고리의 다른 글
완주하지 못한 선수 (1) | 2022.10.12 |
---|---|
숫자 문자열과 영단어 (0) | 2022.10.01 |
신고 결과 받기 (0) | 2022.09.24 |
올바른 괄호 (1) | 2022.09.23 |
크레인 인형뽑기 게임 (1) | 2022.09.21 |