728x90
https://school.programmers.co.kr/learn/courses/30/lessons/118666
풀이
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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스: 공원산책 (0) | 2023.07.02 |
---|---|
프로그래머스: 옹알이(1) (0) | 2023.07.01 |
프로그래머스: 스택/큐 - 올바른 괄호 (1) | 2023.02.16 |
프로그래머스: 연습문제 - 다음 큰 숫자 (0) | 2022.08.31 |
프로그래머스: 연습문제 - 가장 큰 정사각형 찾기 (0) | 2022.08.30 |
댓글