본문 바로가기
알고리즘

[프로그래머스/JAVA] 성격 유형 검사하기

by 상후 2022. 10. 2.
728x90
반응형

 

 

https://github.com/ROUTINE-STUDY/Algorithm

알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.

문제 출처 :  https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

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

programmers.co.kr

풀이 방법
1. Map에 유형별 점수 누적
2. 성격 유형 검사 결과 비교
3. 결과 반환

- 조건문이 많은 게 별로 보기 싫어서 메서드로 따로 추출

 

 

내 코드(JAVA)

 

class Solution {
    Map<Character, Integer> resultMap =  new HashMap<Character, Integer>() {
        {
            put('A', 0); put('N', 0);
            put('C', 0); put('F', 0);
            put('M', 0); put('J', 0);
            put('R', 0); put('T', 0);
        }
    };

    public String solution(String[] survey, int[] choices) {
        for (int i = 0; i < survey.length; i++) {
            counting(survey[i], choices[i]);
        }
        return sendResult();
    }

    // 점수 계산
    public void counting(String type, int choice) {
        char target;
        int score;

        if(choice <= 3) {
            target = type.charAt(0);
            score = 4 - choice;
        } else {
            target = type.charAt(1);
            score = choice - 4;
        }

        resultMap.put(target, resultMap.getOrDefault(target, 0) + score);
    }

    // 성격 유형 결과 비교
    private String mbtiCheck(char a, char b) {
        String result = "";

        if(resultMap.get(a) >= resultMap.get(b)) {
            result = String.valueOf(a);
        } else {
            result = String.valueOf(b);
        }

        return result;
    }

    // 결과 반환
    public String sendResult() {
        StringBuilder sb = new StringBuilder();

        sb.append(mbtiCheck('R', 'T'));
        sb.append(mbtiCheck('C', 'F'));
        sb.append(mbtiCheck('J', 'M'));
        sb.append(mbtiCheck('A', 'N'));

        return sb.toString();
    }
}

 

 

728x90
반응형

댓글