문제

지표 번호성격 유형

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

+ Recent posts