알고리즘
[프로그래머스/JAVA] 성격 유형 검사하기
상후
2022. 10. 2. 20:41
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
반응형