728x90
코드 힌트
- 성격 유형 초기화:
- 성격 유형을 두 개씩 묶어 저장하는 배열을 초기화합니다. 예를 들어, {'R', 'T'}는 한 쌍의 성격 유형을 의미합니다.
- 각 성격 유형의 점수를 저장하기 위해 해시맵을 초기화합니다. 이때 초기값으로 모든 성격 유형의 점수를 0으로 설정합니다.
- 점수 계산:
- survey 배열과 choices 배열을 순차적으로 탐색합니다.
- 각 설문 항목에서 첫 번째 성격 유형과 두 번째 성격 유형을 추출합니다.
- choices 값에 따라 점수를 분배합니다. 만약 선택한 값이 4보다 크면 두 번째 성격 유형에 점수를 더하고, 4보다 작으면 첫 번째 성격 유형에 점수를 더합니다.
- 결과 조합:
- 각 성격 유형 쌍에서 점수가 높은 성격 유형을 선택해 결과 문자열에 추가합니다.
- 동일한 점수일 경우 배열에서 앞에 있는 성격 유형을 우선 선택합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
// 각 성격 유형 쌍의 점수를 저장하기 위한 맵
HashMap<Character, Integer> map = new HashMap<>();
String result = "";
// 성격 유형 초기화 (성격 유형 쌍을 배열로 선언)
char[][] keyArr = {{'R', 'T'}, {'C', 'F'}, {'J', 'M'}, {'A', 'N'}};
// 각 성격 유형의 점수를 0으로 초기화
for (char[] key : keyArr) {
map.put(key[0], 0);
map.put(key[1], 0);
}
// 설문조사 결과를 바탕으로 점수 계산
for (int i = 0; i < survey.length; i++) {
char first = survey[i].charAt(0); // 첫 번째 성격 유형
char second = survey[i].charAt(1); // 두 번째 성격 유형
int choice = choices[i];
// choice 값이 4보다 크면 두 번째 성격 유형에 점수, 4보다 작으면 첫 번째 성격 유형에 점수
if (choice > 4) {
map.put(second, map.get(second) + (choice - 4));
} else if (choice < 4) {
map.put(first, map.get(first) + (4 - choice));
}
}
// 각 성격 유형 쌍에서 더 높은 점수를 가진 성격 유형을 결과에 추가
for (char[] key : keyArr) {
if (map.get(key[0]) >= map.get(key[1])) {
result += key[0];
} else {
result += key[1];
}
}
// 최종 성격 유형 결과 반환
return result;
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] [PCCE 기출문제] 9번 / 지폐 접기 (0) | 2024.09.09 |
---|---|
[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기 (3) | 2024.09.07 |
[프로그래머스] 바탕화면 정리 (0) | 2024.08.29 |
[프로그래머스] 개인정보 수집 유효기간 (0) | 2024.08.27 |
[프로그래머스] 공원 산책 (0) | 2024.08.27 |