프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
최근 지락실2 보다가 너무 재밌어서 지락실1도 정주행 중이었는데 문제 풀다가 이거 밖에 생각이 안났다ㅌㅋㅋㅋㅋ
💡풀이💡
1. 지표 번호 별 성격 유형 저장 배열 생성
- 마지막 성격 유형 결과를 지표 번호 순서대로 return 해야하기 때문에 지표 번호 별로 성격 유형을 저장했다.
- 그리고 조건 중 하나가 설문조사 결과 점수가 같은 성격 유형은 사전 순으로 빠른 걸 return 하도록 해야하기 때문에 알파벳 순서대로 저장했다.
2. 성격 유형 별 점수 저장 map 생성
3. 설문조사 점수 계산
4. 성격 유형 결과 계산
전체 코드
import java.io.*;
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
char[][] type = {{'R', 'T'}, {'C', 'F'}, {'J', 'M'}, {'A', 'N'}}; // 지표 변호 별 성격 유형 저장 :: 각 지표 별로 알파벳 순서로 저장
Map<Character, Integer> score = new HashMap<>(); // 성격 유형 : 설문조사 점수 저장 map
for(int i=0; i<type.length; i++) { // map 초기화
char[] t = type[i];
score.put(t[0], 0);
score.put(t[1], 0);
}
// 설문조사 점수 계산
calScore(score, survey, choices);
// 성격유형 계산
return getResult(score, type);
}
public void calScore(Map<Character, Integer> score, String[] survey, int[] choices) {
int[] scores = {0, 3, 2, 1, 0, 1, 2, 3};
for(int i=0; i<survey.length; i++) {
char notAgree = survey[i].charAt(0);
char agree = survey[i].charAt(1);
if(choices[i] < 4) score.put(notAgree, score.get(notAgree) + scores[choices[i]]);
else score.put(agree, score.get(agree) + scores[choices[i]]);
}
}
public String getResult(Map<Character, Integer> score, char[][] type) {
String result = "";
for(int i=0; i<type.length; i++) {
char[] t = type[i];
result += (score.get(t[1]) <= score.get(t[0]) ? t[0] : t[1]); // 걊이 같으면 알파벳 순서가 빠른 t[0]이 저장될 수 있도록
}
return result;
}
}
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 연습문제] JadenCase 문자열 만들기 (0) | 2023.07.07 |
---|---|
[프로그래머스 2022 KAKAO BLIND RECRUITMENT] k진수에서 소수 개수 구하기 (0) | 2023.07.03 |
[프로그래머스 2018 KAKAO BLIND RECRUITMENT] <1차> 캐시 (0) | 2023.07.01 |
[프로그래머스 2023 KAKAO BLIND RECRUITMENT] 이모티콘 할인행사 (0) | 2023.06.19 |
[프로그래머스 2023 KAKAO BLIND RECRUITMENT] 개인정보 수집 유효기간 (0) | 2023.06.17 |
댓글