반응형
1. 문제설명
나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.
2. 제안 사항
- 1 ≤ survey의 길이 ( = n) ≤ 1,000
- survey의 원소는 "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" 중 하나입니다.
- survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
- survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
- choices의 길이 = survey의 길이
- choices[i]는 검사자가 선택한 i+1번째 질문의 선택지를 의미합니다.
- 1 ≤ choices의 원소 ≤ 7
choice | 뜻 |
1 | 매우 비동의 |
2 | 비동의 |
3 | 약간 비동의 |
4 | 모르겠음 |
5 | 약간 동의 |
6 | 동의 |
7 | 매우 동의 |
선택지성격 유형 점수
매우 비동의 | 네오형 3점 |
비동의 | 네오형 2점 |
약간 비동의 | 네오형 1점 |
모르겠음 | 어떤 성격 유형도 점수를 얻지 않습니다 |
약간 동의 | 어피치형 1점 |
동의 | 어피치형 2점 |
매우 동의 | 어피치형 3점 |
3. 입출력 예
survey | choices | result |
["AN", "CF", "MJ", "RT", "NA"] | [5, 3, 2, 7, 5] | "TCMA" |
["TR", "RT", "TR"] | [7, 1, 3] | "RCJA" |
4. 풀이 과정
이 문제는 해시 문제이다.
우선 dictionary형태로 각 성격유형별로 정의를 해준 후
위에 choice표를 보면 알 수 있듯이 모르겠을 경우에는 점수가 더해지는것이 없고 choice의 값에 4를 빼준 후 절대값을 구해서 더해주면 성격 유형 점수를 계산 할 수 있다.
import Foundation
func solution(_ survey:[String], _ choices:[Int]) -> String {
var result : [String : Int] = ["R":0, "T":0, "C":0, "F":0, "J":0, "M":0, "A":0, "N":0]
for i in 0..<survey.count{
var point = choices[i] - 4
if point < 0{
result[String(survey[i].prefix(1))]! += abs(point)
}
else if point > 0{
result[String(survey[i].suffix(1))]! += point
}
}
var answer = ""
result["R"]! < result["T"]! ? (answer += "T") : (answer += "R")
result["C"]! < result["F"]! ? (answer += "F") : (answer += "C")
result["J"]! < result["M"]! ? (answer += "M") : (answer += "J")
result["A"]! < result["N"]! ? (answer += "N") : (answer += "A")
return answer
}
반응형
'코테' 카테고리의 다른 글
[프로그래머스] 동영상 재생기 (1) | 2024.12.17 |
---|---|
[프로그래머스][그리드 알고리즘] 구명보트 (0) | 2022.02.06 |
[프로그래머스][그리드 알고리즘] 구명보트 (0) | 2022.02.06 |
[프로그래머스][그리드 알고리즘] 큰 수 만들기 (0) | 2022.02.06 |
[프로그래머스][그리드 알고리즘] 큰 수 만들기 (0) | 2022.02.06 |
댓글