우당탕탕 개발일지
[프로그래머스] 성격 유형 검사하기 (Java, Level.1) 본문
문제
성격 유형
- 번 지표 라이언형(R), 튜브형(T)
- 번 지표 콘형(C), 프로도형(F)
- 번 지표 제이지형(J), 무지형(M)
- 번 지표 어피치형(A), 네오형(N)
대답에 대한 점수
- 매우 비동의 >> 3
- 비동의 >> 2
- 약간 비동의 >> 1
- 모르겠음 >> 0
- 약간 동의 >> 1
- 동의 >> 2
- 매우 동의 >> 3
점수가 더 큰 값을 성격으로 지정한다.
점수가 같을 경우, 사전적으로 더 큰 값으로 지정한다.
입출력 예
1번 사진 : 매개변수
2번 사진 : 2번쨰 예시에 대한 성격 점수
풀이
고민한 부분
1. 각 성격 질문에 대한 대답에 알맞는 점수를 어떻게 가져올지
이 부분은 int형 배열에 각 점수를 미리 넣어놨다.
대답이 1, 7이 들어오면 3점
2, 6이 들어오면 2점
3, 5가 들어오면 1점
4가 들어오면 0점이기 때문에
대답 - 1 을 배열의 index 값이라고 생각하고 각각 알맞는 점수를 저장하였다.
따라서 int[] choices = { 3, 2, 1, 0, 1, 2, 3 }; 으로 초기화 하였다.
2. 성격에 따른 각 지표를 어떻게 구별할지
문제에 보면 각 성격 2개씩 짝지어져 1~4의 지표가 있다.
2개씩 짝지어 있는것을 어떻게 묶을지 고민하였다.
이 부분은 String 배열에 성격 순서대로 저장하였다.
String[] surveyArr = { R, T, C, F, J, M, A, N };
2차원 배열로 저장할까? 고민하기도 했지만 8개뿐이라 굳이 싶었다.
나중에 사용할 때는 for문을 +2로 올려서 사용하는 것으로 생각했다.
3. 검사자의 점수 저장
이 부분은 빠르게 고민이 끝났다.
HashMap에 저장하여 필요한 값들만 넣고 뽑아쓰기로 했다.
Key : 성격 유형
Value : 검사 점수
1. 변수 설명
answer : 반환 값
len : 성격 질문 개수
scoreArr : 답변에 대한 점수
surveyArr : 성격 유형
resultMap : 검사 결과 점수 저장할 변수
2. 검사 결과 점수 계산
s1 : 성격 유형 첫번째 값
s2 : 성격 유형 두번째 값
score : 대답에 따른 점수
choices[i]의 값이 1이면 매우 비동의로 3점을 얻게 된다. 따라서 scoreArr의 0번째 Index 값을 score에 저장한다.
조건문을 사용하여 choices[i] 값이 4 미만일 경우에는 앞의 성격 유형에 점수를 추가하고
4이상일 경우에는 뒤의 성격 유형에 점수를 추가하였다.
이 부분에서 처음에는 put(s1, score) 으로 구현하여 틀렸다... ㅋㅋ
기존 점수에 계속 더해져야 하는게 초기화가 되었다.... (바보...)
3. 성격 4가지 유형 확인
성격 유형이 저장되어 있는 surveyArr 배열을 기준으로 for문을 사용하였다.
i의 값이 +1이 아닌 +2로 변경하여 2개씩 살펴보도록 했다.
2번에서 설정한 resultMap에서 성격 유형에 대한 값을 하나씩 추출했다.
만약, 해당 성격이 없을 경우 오류가 발생할 수 있기에 0으로 초기화 하였다.
조건문을 사용하여 점수가 더 큰 값을 찾아 answer에 해당 성격을 저장하였다.
만약 같이 같으면 사전순으로 더 빠른 값인 surverArr[i]를 넣었다.
해당 surverArr 배열을 보면 이미 index 값이 짝수인 원소가 더 빠르기 때문이다.
그 후, 저장이 완료된 answer 값을 반환한다.
코드
프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 (MySQL, Level.4) (0) | 2025.02.04 |
---|---|
[프로그래머스] NULL 처리하기 (MySQL, Level.2) (0) | 2025.02.03 |
[프로그래머스] 개인정보 수입 유효기간 (Java, Level.1) (0) | 2024.07.09 |
[프로그래머스] 데이터 분석(Java, Level.1) (0) | 2024.07.09 |
[프로그래머스] 공원 산책 (Java, Level.1) (1) | 2024.07.08 |