728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/118666
풀이
레벨 1이라 그런지 어렵지 않은 문제였음
문제를 오랜만에 풀어서 무슨 함수가 있고 하는걸 까먹었음.... ㅎ
그래서 Character 형 ArrayList에다가 'R', 'T', 'C' , ... 얘네들을 다 추가해서 .indexOf() 함수를 사용했는데 그럴 필요없이 그냥 "RTCFJMAN" 문자열에다가 .indexOf() 함수써도 되는거였음
암튼 그렇게 풀고 풀이를 더 찾아봤는데 훨씬 쉬운 풀이가 있었음.
[자바] 프로그래머스 - 성격 유형 검사하기 (Lv1, Java) - Nahwasa
이 풀이에서는 int[] cnt = new int['Z'-'A'+1]; 이렇게 점수를 기록할 배열을 크기 26으로 만들어서 해당 유형에 해당하는 점수를 +해줌 이렇게 하면 나처럼 귀찮게 마지막에 answer에 문자열 추가할 떄 노가다 안해도 됨!
20분 정도 걸렸는데 더 쉽게 푸는 방법을 생각하고 문제 풀기 시작하는 습관을 들여야겠음 ㅎㅎㅎ
자세한건 주석으로 !
코드
// 코딩테스트 연습 - 2022 KAKAO TECH INTERNSHIP - 성격 유형 검사하기
// https://school.programmers.co.kr/learn/courses/30/lessons/118666
package PROGRAMMERS.level1;
import java.util.ArrayList;
public class Num118666_성격유형검사하기 {
// 1. R, T
// 2. C, F
// 3. J, M
// 4. A, N
private static class Solution {
private String solution(String[] survey, int[] choices) {
ArrayList<Character> charArrayList = new ArrayList<Character>();
charArrayList.add('R');
charArrayList.add('T');
charArrayList.add('C');
charArrayList.add('F');
charArrayList.add('J');
charArrayList.add('M');
charArrayList.add('A');
charArrayList.add('N');
int[] score = new int[8]; // 성격 유형 당 점수를 저장할 배열
for (int i = 0; i < survey.length; i++) {
String temp = survey[i];
int option = choices[i];
// 해당 성격 유형에 점수 + 해주기
// 1이면 [0] += 3, 2이면 [0] += 2, 3이면 [0] += 1,
// 4이면 넘어가고,
// 5이면 [1] += 1, 6이면 [1] += 2, 7이면 [1] += 3
switch (option) {
case 1:
score[charArrayList.indexOf(temp.charAt(0))] += 3;
break;
case 2:
score[charArrayList.indexOf(temp.charAt(0))] += 2;
break;
case 3:
score[charArrayList.indexOf(temp.charAt(0))] += 1;
case 4:
break;
case 5:
score[charArrayList.indexOf(temp.charAt(1))] += 1;
break;
case 6:
score[charArrayList.indexOf(temp.charAt(1))] += 2;
break;
case 7:
score[charArrayList.indexOf(temp.charAt(1))] += 3;
break;
}
}
String answer = "";
if (score[0] >= score[1]) {
answer += "R";
} else {
answer += "T";
}
if (score[2] >= score[3]) {
answer += "C";
} else {
answer += "F";
}
if (score[4] >= score[5]) {
answer += "J";
} else {
answer += "M";
}
if (score[6] >= score[7]) {
answer += "A";
} else {
answer += "N";
}
return answer;
}
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(sol.solution(new String[]{"AN", "CF", "MJ", "RT", "NA"},
new int[]{5, 3, 2, 7, 5}));
System.out.println(sol.solution(new String[]{"TR", "RT", "TR"},
new int[]{7, 1, 3}));
}
}
728x90