본문 바로가기
알고리즘/프로그래머스

프로그래머스: 2022 KAKAO TECH INTERNSHIP - 성격 유형 검사하기

by 패쓰킴 2023. 3. 27.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

survey에 해당하는 choices 점수를 각 지표에 더해주고 

각 지표에서 큰 수를 가진 지표를 반환(단, 같으면 사전순의 지표를 반환)

 

예. AN / 5

A 3  
A 2  
A 1  
  0  
N 1 O
N 2  
N 3  

예. CF / 3

C 3  
C 2  
C 1 O
  0  
F 1  
F 2  
F 3  

 

이렇게 해주면 각 지표의 점수는

R 0 T 3
C 1 F 0
J 0 M 2
A 1 N 1

R < T 이므로, T

C > F 이므로, C

J < M 이므로, M

A == N 이므로, A

 

코드

func solution(_ survey:[String], _ choices:[Int]) -> String {
    let score = [3,2,1,0,1,2,3]
    var table = ["R":0, "T":0, "C":0, "F":0, "J":0, "M":0, "A":0, "N":0]
    var result = ""
    
    for idx in 0 ..< survey.count {
        let char = survey[idx]
        let left = String(char.prefix(1))
        let right = String(char.suffix(1))
        
        let cho = choices[idx]
        if cho > 4 {
            table[right]! += score[cho - 1]
        } else {
            table[left]! += score[cho - 1]
        }
    }
    
    if table["R"]! > table["T"]! || table["R"]! == table["T"]! {
        result += "R"
    } else {
        result += "T"
    }
    
    if table["C"]! > table["F"]! || table["C"]! == table["F"]! {
        result += "C"
    } else {
        result += "F"
    }
    
    if table["J"]! > table["M"]! || table["J"]! == table["M"]! {
        result += "J"
    } else {
        result += "M"
    }
    
    if table["A"]! > table["N"]! || table["A"]! == table["N"]! {
        result += "A"
    } else {
        result += "N"
    }
    
    return result
}
728x90

댓글