본문 바로가기

카테고리 없음

20240102 - 프로그래머스/118666

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        String[] type = {"RT", "CF", "JM", "AN"};
        Map<String, Integer> typeMap = new HashMap<>();
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<type.length; i++){
            typeMap.put(type[i],0);
        }
        for (int i = 0; i < survey.length; i++) {
            sb.append(survey[i]);
            if (typeMap.containsKey(sb.toString())) {
                typeMap.replace(sb.toString(), typeMap.get(sb.toString()) + (choices[i]-4));
            } else if (typeMap.containsKey(sb.reverse().toString())) {
                typeMap.replace(sb.toString(), typeMap.get(sb.toString()) + (4-choices[i]));
            }
            sb.delete(0, 2);
        }
        for (int i = 0; i < typeMap.size(); i++) {
            if(typeMap.get(type[i]) > 0){
                sb.append(type[i].charAt(1));
            } else {
                sb.append(type[i].charAt(0));
            }
        }
        answer = sb.toString();
        return answer;
    }
}

 

타입별로 묶어서 Map에 넣어주고 survey 배열을 돌면서 하나씩 Map의 키값과 대조하여 선택에 따른 점수를 밸류값에 더해준다. 배열에 저장된 타입과 반대로 나올 수 있으므로 그 경우에는 점수를 반대로 계산해 준다. 그 이후에 Map에 저장된 밸류값에 따라 결과를 리턴해준다.