이 문제처럼 특정 값을 가지고 점수를 구한다던지 결과값을 구하는 상황에 있어서는 배열을 만들어 배열의 인덱스로 해당 값을 활용하는 것이 효과적입니다.
다음처럼 특정 값 예를들어 R 의 값을 증가시키고 싶다면 다음과 같이 접근할 수 있겠습니다.
- Character 타입의 배열을 만들어 각각의 성격 유형들을 담습니다
- 각각의 성격 유형들의 점수를 firstIndex 를 활용하여 인덱스를 추출하여 해당 Int 배열의 값을 증가시킵니다.
let info: [Character] = ["R", "T", "C", "F", "J", "M", "A", "N"]
var list: [Int] = .init(repeating: 0, count: 8)
list[info.firstIndex(of: value.first!)!] += 3
import Foundation
func solution(_ survey:[String], _ choices:[Int]) -> String {
var info: [Character] = ["R", "T", "C", "F", "J", "M", "A", "N"]
var list: [Int] = .init(repeating: 0, count: 8)
for (index,value) in survey.enumerated() {
let point = choices[index]
switch point {
case 1:
list[info.firstIndex(of: value.first!)!] += 3
break
case 2:
list[info.firstIndex(of: value.first!)!] += 2
break
case 3:
list[info.firstIndex(of: value.first!)!] += 1
break
case 4:
break
case 5:
list[info.firstIndex(of: value.last!)!] += 1
break
case 6:
list[info.firstIndex(of: value.last!)!] += 2
break
case 7:
list[info.firstIndex(of: value.last!)!] += 3
break
default:
break
}
}
var result = ""
for i in stride(from: 0, to: list.count-1, by: 2) {
if list[i] < list[i+1] {
result += String(info[i+1])
} else if list[i] > list[i+1] {
result += String(info[i])
} else {
let a = min(info[i], info[i+1])
result += String(a)
}
}
return result
}
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 - 크레인 인형뽑기 게임 (2019 카카오 개발자 겨울 인턴 문제) (0) | 2024.09.15 |
---|---|
프로그래머스 - 숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴쉽) (0) | 2024.09.14 |
프로그래머스 - 키패드 누르기 (2022 카카오 인턴) (2) | 2024.09.11 |
프로그래머스 - 두 개 뽑아서 더하기 (0) | 2024.09.11 |
프로그래머스 - 3진법 뒤집기 (0) | 2024.09.11 |