728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/118666
풀이 방법
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
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] 야간 전술보행 (0) | 2022.11.14 |
---|---|
[프로그래머스/JAVA] 주차 요금 계산 (0) | 2022.10.09 |
[백준/JAVA] 1978. 소수 찾기 (0) | 2022.07.16 |
[백준/JAVA] 2581. 소수 (0) | 2022.07.16 |
[백준/JAVA] 2525. 오븐 시계 (0) | 2022.07.01 |
댓글