1hours
- 성격 유형 검사 hashmap 만들기 ( 유형에 해당하는 알파벳과, 점수를 키쌍으로 묶기)
- 입력되는 값의 횟수만큼 반복문 돌리기
- chocies 값에 따라 choices값이 4보다 크면 survey의 두번째 글자에 점수 추가
- 4보다 작으면 survey의 첫번째 글자에 점수 추가
- 2가지 유형을 비교해서 더 큰 쪽의 값을 출력하기
import java.util.HashMap;
/**
* 성격유형검사
* survey : 질문마다 판단하는 지표를 담은 1차원 배열 ( 매개변수 )
* choices : 검사자가 선택한 선택지를 담은 1차원 배열 ( 매개변수 )
*/
public class Solution {
public static String solution(String[] survey, int[] choices) {
HashMap<Character, Integer> mbti = new HashMap<Character, Integer>() {{
put('R', 0);
put('T', 0);
put('C', 0);
put('F', 0);
put('J', 0);
put('M', 0);
put('A', 0);
put('N', 0);
}};
int COUNT = survey.length;
for (int i = 0; i < COUNT; i++) {
char type1 = survey[i].charAt(0);
char type2 = survey[i].charAt(1);
if (choices[i] > 4) {
mbti.put(type2, mbti.get(type2) + (choices[i] - 4));
} else if (choices[i] < 4) {
mbti.put(type1, mbti.get(type1) + (4 - choices[i]));
}
}
String answer = makeAnswer(mbti);
return answer;
}
public static String makeAnswer(HashMap<Character, Integer> mbti){
StringBuilder sb = new StringBuilder();
if(mbti.get('R') >= mbti.get('T')){
sb.append('R');
}else{
sb.append('T');
}
if(mbti.get('C') >= mbti.get('F')){
sb.append('C');
}else{
sb.append('F');
}
if(mbti.get('J') >= mbti.get('M')){
sb.append('J');
}else{
sb.append('M');
}
if(mbti.get('A') >= mbti.get('N')){
sb.append('A');
}else{
sb.append('N');
}
return sb.toString();
}
}
- Java에 문자열을 추가할 때
StringBuilder
를 사용하자- 연속된 String문자열에서 특정 문자를 빼오고 싶을 땐
CharAt
을 사용하자