728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/118666
해설
설문조사에 해당하는 성격유형이 어떤것일지 알 수 없어서 Map을 사용해 각 성격유형별 점수를 Map에 넣고 마지막에 성격유형을 출력시 맞는 점수를 출력하도록 하면 되는 비교적 간단한 자료구조를 이용한 구현문제였습니다.
추가로 map이 아닌 배열로만 해결하는 풀이도 깔끔해보여 가져왔습니다.
주의점
- 유형점수가 동일시 사전 순으로 출력
코드
import java.util.*;
class Solution {
Map<Character, Integer> m;
public String solution(String[] survey, int[] choices) {
String answer = "";
m = new HashMap<>();
// 1. 각 지표의 결과별로 m에 유형별 점수 입력
for(int i=0;i<survey.length;i++){
if(choices[i]<4){
addScore(survey[i].charAt(0),4-choices[i]);
}else if(choices[i]>4){
addScore(survey[i].charAt(1),choices[i]-4);
}
}
//2. 유형순서별로 정답 출력(점수동일시 사전순 출력)
StringBuilder sb = new StringBuilder();
sb.append(getType('R','T')).append(getType('C','F')).append(getType('J','M')).append(getType('A','N'));
answer = sb.toString();
return answer;
}
public void addScore(char a, int score){
m.put(a,m.getOrDefault(a,0)+score);
}
public char getType(char a, char b){
if(m.getOrDefault(a,0)==m.getOrDefault(b,0)) return (a-b>0 ? b : a);
if(m.getOrDefault(a,0)>m.getOrDefault(b,0)) return a;
return b;
}
}
다른 풀이
import java.util.HashMap;
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
char [][] type = {{'R', 'T'}, {'C', 'F'}, {'J', 'M'}, {'A', 'N'}};
int [] score = {0, 3, 2, 1, 0, 1, 2, 3};
HashMap<Character, Integer> point = new HashMap<Character, Integer>();
// 점수 기록할 배열 초기화
for (char[] t : type) {
point.put(t[0], 0);
point.put(t[1], 0);
}
// 점수 기록
for (int idx = 0; idx < choices.length; idx++){
if(choices[idx] > 4){
point.put(survey[idx].charAt(1), point.get(survey[idx].charAt(1)) + score[choices[idx]]);
} else {
point.put(survey[idx].charAt(0), point.get(survey[idx].charAt(0)) + score[choices[idx]]);
}
}
// 지표 별 점수 비교 후 유형 기입
for (char[] t : type) {
answer += (point.get(t[1]) <= point.get(t[0])) ? t[0] : t[1];
}
return answer;
}
}
728x90
'[IT] 코딩테스트 > [문제 및 풀이] 프로그래머스' 카테고리의 다른 글
[프로그래머스] 두 큐 합 같게 만들기 / 자바(Java) (0) | 2023.11.06 |
---|---|
[프로그래머스] 푸드 파이트 대회 / 자바(Java) (1) | 2023.11.02 |
[프로그래머스] 이모티콘 할인행사 / 자바(Java) (0) | 2023.10.31 |
[프로그래머스] 택배상자 / 자바(Java) (2) | 2023.10.30 |
[프로그래머스] n^2 배열 자르기 / 자바(Java) (0) | 2023.10.29 |