본문 바로가기
Problem Solving

[Swift] 프로그래머스 성격 유형 검사하기(lv. 1)

by DuncanKim 2023. 2. 21.
728x90

[Swift] 프로그래머스 성격 유형 검사하기(lv. 1)

 

1. 문제

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

 

프로그래머스

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

programmers.co.kr

 

(문제가 개길다....)

 

2. 접근

문제가 너무 길어서 읽다가 포기할 뻔 했다.

하지만 천천히 읽어보다 보니, 그다지 어려운 것이 아니라, 딕셔너리를 활용해서 적절하게 값을 바꿔주고, 점수만 세주면 되는 것이었다.

 

4점 이라면, 패스를 하고, 4점 미만이라면, 4 - i 만큼의 숫자를 더해주고, 4점 초과라면 i - 4 만큼의 수를 더해주면 된다. 항목에 맞는 유형의 점수를 올려주는 방식으로 반복문을 돈 다음에, 삼항연산자로 답변에 들어갈 알파벳들을 넣어준다. 그리고 String으로 리턴을 하면 끝이 난다.

 

3. 코드

import Foundation

func solution(_ survey:[String], _ choices:[Int]) -> String {
    var surveyDictionary: [Character : Int] = ["R" : 0, "T" : 0, "F" : 0, "C" : 0, "M" : 0, "J" : 0, "A" : 0, "N" : 0]
    for (index, i) in choices.enumerated() {
        if i == 4 {
            continue
        } else if i < 4 {
            let score = 4 - i
            surveyDictionary[Array(survey[index])[0]]! += score
        } else {
            let score = i - 4
            surveyDictionary[Array(survey[index])[1]]! += score
        }
    }
    
    var answer = [Character]()
    surveyDictionary["R"]! >= surveyDictionary["T"]! ? answer.append("R") : answer.append("T")
    surveyDictionary["C"]! >= surveyDictionary["F"]! ? answer.append("C") : answer.append("F")
    surveyDictionary["J"]! >= surveyDictionary["M"]! ? answer.append("J") : answer.append("M")
    surveyDictionary["A"]! >= surveyDictionary["N"]! ? answer.append("A") : answer.append("N")
    
    return String(answer)
}
728x90

댓글