알고리즘/프로그래머스

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

K.두부 2022. 8. 27. 00:24
반응형

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

 

프로그래머스

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

programmers.co.kr

풀이

선택지에 따라 8가지의 mbti에 점수를 입력해야하므로 HashMap 을 쓰면 간단하게 풀 수 있다.

HashMap 의 key 값에 8가지의 mbti 유형을 넣어주고 value 값을 모두 0으로 선언한다.

choice 길이 만큼 반복문을 태워서 switch 문을 이용해서 점수를 입력해주었다. 

이후에 서로 상이한 mbti 끼리 점수를 비교해서 큰 값을 answer 변수에 차례대로 입력하면 된다.

import java.util.HashMap;
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
char[] mbti = {'R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'};
HashMap<Character, Integer> hm = new HashMap<>();
// HashMap에 mbti 8가지 입력
for (int i=0; i<mbti.length; i++) {
hm.put(mbti[i], 0);
}
// 선택지에 따라 해당 mbti에 점수 입력
for (int i=0; i<choices.length; i++) {
switch (choices[i]) {
case 1:
hm.put(survey[i].charAt(0), hm.get(survey[i].charAt(0)) + 3);
break;
case 2:
hm.put(survey[i].charAt(0), hm.get(survey[i].charAt(0)) + 2);
break;
case 3:
hm.put(survey[i].charAt(0), hm.get(survey[i].charAt(0)) + 1);
break;
case 4:
break;
case 5:
hm.put(survey[i].charAt(1), hm.get(survey[i].charAt(1)) + 1);
break;
case 6:
hm.put(survey[i].charAt(1), hm.get(survey[i].charAt(1)) + 2);
break;
case 7:
hm.put(survey[i].charAt(1), hm.get(survey[i].charAt(1)) + 3);
break;
}
}
for (int i=0; i<mbti.length; i+=2) {
if (hm.get(mbti[i]) >= hm.get(mbti[i+1])) {
answer += mbti[i];
} else {
answer += mbti[i+1];
}
}
return answer;
}
}

 

 

 

 

 

반응형