본문 바로가기
코딩테스트/프로그래머스

[2022 KAKAO TECH INTERNSHIP] 성격 유형 검사하기

by 의정부핵꿀밤 2022. 9. 3.
728x90

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

 

프로그래머스

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

programmers.co.kr


우선 문제는 hashmap으로 각 유형별 점수를 survey 기반으로 측정하고 마지막으로 비교해서 answer를 return했따

 

level 1 문제라서 로직이 어렵지는 않았는데 실수를 해서 좀 걸렸따😥

내가 실수한 부분은 요거였따

hashmap의 값을 불러서 더해준 후 업데이트를 해야하는데, 냅다 그냥 업데이트만 해서 값이 덮여진 거였따

그 부분만 해결하니 잘 풀렸다~

 

 

 

자바 코드)

import java.util.HashMap;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        HashMap<String, Integer> hashMap = new HashMap<>();
        String[] key = {"R","T","C","F","J","M","A","N"};
        for(int i = 0; i < key.length; i++){
            hashMap.put(key[i], 0);
        }

        for(int i=0;i<survey.length;i++) {
            int choice = choices[i];
            if(choice == 4) {
                continue;
            }
            if(choice<4) {
                String s = String.valueOf(survey[i].charAt(0));
                hashMap.put(s, hashMap.get(s) + (4-choice));
            } else {
                String s = String.valueOf(survey[i].charAt(1));
                hashMap.put(s, hashMap.get(s) + (choice-4));
            }
        }

        answer += getType("R", "T", hashMap);
        answer += getType("C", "F", hashMap);
        answer += getType("J", "M", hashMap);
        answer += getType("A", "N", hashMap);

        return answer;
    }
    public String getType(String a, String b, HashMap<String, Integer> hashMap) {
        int num1 = hashMap.get(a);
        int num2 = hashMap.get(b);
        if(num1 == num2) {
            return (a.compareTo(b)<0) ? a : b;
        }
        if(num1 > num2) {
            return a;
        } else {
            return b;
        }
    }
}
728x90

댓글