Problem Solving
[Swift] 프로그래머스 성격 유형 검사하기(lv. 1)
DuncanKim
2023. 2. 21. 09:28
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