멍두의 개발새발
[프로그래머스] 성격 유형 검사하기 in Java 본문
📍 문제
https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📍 코드 설명
MBTI문제이다 ㅋㅋ
RT / CF / JM / AN 이 짝이고 둘 중에 점수가 큰 값을 출력한다 ex RCJA
survey가 AN, choices가 7이면 N에 +3점 ,choices가 1이면 A에 +3점
survey가 NA, choices가 7이면 A에 +3점, choices가 1이면 N에 +3점
1. 설문 조사 결과를 담을 map을 하나 만든다
이때 map으로 만드는 이유는 매 choices마다 string값으로 검색하여 결과 값을 더할 것 이기 때문에 검색 속도가 빠른 map을 선택하였다.
2. choices를 기준으로 테스트 결과를 더한다
3. choices가 4이면 더할 값이 없으므로 다음 choices로 넘어간다
4. choices가 4 미만이면 survey의 첫번째 String을 가져온뒤 현재 총 합 + 4 - choices 를 수행한다
5. choices가 4 초과이면 suvery의 두번째 String을 가져온뒤 현재 총합 - 4 + choices를 수행한다.
6. StringBuilder를 사용하여 짝 중에 더 큰 값들을 append한다
📍 코드
✔️ 코드
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
StringBuilder sb = new StringBuilder();
//성격 결과지 map
Map<String, Integer> result = new HashMap<>();
result.put("R", 0);
result.put("T", 0);
result.put("C", 0);
result.put("F", 0);
result.put("J", 0);
result.put("M", 0);
result.put("A", 0);
result.put("N", 0);
//테스트 수행
for(int i = 0; i < choices.length; i++){
String[] surveyArr = survey[i].split("");
if(choices[i] == 4){
continue;
}else if(choices[i] < 4){
result.put(surveyArr[0], result.get(surveyArr[0]) + 4 - choices[i]);
}else{
result.put(surveyArr[1], result.get(surveyArr[1]) + choices[i]-4);
}
}
//결과
sb.append((result.get("R") >= result.get("T")) ? "R" : "T");
sb.append((result.get("C") >= result.get("F")) ? "C" : "F");
sb.append((result.get("J") >= result.get("M")) ? "J" : "M");
sb.append((result.get("A") >= result.get("N")) ? "A" : "N");
return sb.toString();
}
}
📍 틀린이유
점수를 계산할 때 choices가 1이면 +3점인데 +1점으로 계산했다
문제를 제대로 파악하지 않아 한 실수이다
이런 기본적인 실수를 하지 않도록 출력 예시를 꼼꼼하게 살펴보고 손으로 쓰자
방법이 생각났다고 급하게 코드로 작성하면 오히려 틀리고 오래걸린다!!!
또한 귀찮다고 안하지 말고 디버깅도 계속 해볼것
📍 기억할 것
손으로 쓰고 코드 작성하기
디버깅 최대한 많이 하기
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] - 완주하지 못한 선수 in Java (getOrDefault()) (2) | 2024.07.04 |
---|---|
[프로그래머스] 크레인 인형뽑기 게임 in Java (1) | 2024.06.28 |
[프로그래머스] 햄버거 만들기 in Java (0) | 2024.06.27 |
[프로그래머스] 콜라츠 추측 in Java (2) | 2024.05.05 |