반응형
이전 포스트의 파이썬, C++ 코드에 이어
프로그래머스 성격 유형 검사하기를 Go로 풀어보겠다.
2022년 카카오 인턴 코딩 테스트 출제로 아직 프로그래머스에선 푼 사람이 없다.
문제
레벨 1치고 문제가 좀 길다. 하지만 간단하다.
survey에 성격 유형 지표들이 들어있고
choices에 따라 survey의 유형에 값을 더해주고
4개의 분류에서 각각 값이 높은 지표를 리턴하면 된다.
구현
survey와 choices의 개수가 같기 때문에
이 사이즈만큼 반복을 하고
map에 survey의 지표 중에 choices에 따라 선택하여 값을 더해준다.
그 후 map의 값을 비교하여 성격 유형 값에 추가해주고
성격유형을 리턴한다.
문제만 길지 간단한 문제라고 생각한다.
코드
func solution(survey []string, choices []int) string {
var score = [...]int{0,3,2,1,0,1,2,3}
survelm := map[string]int{
"R":0, "T":0,
"C":0, "F":0,
"J":0, "M":0,
"A":0, "N":0,
}
answer := ""
for i, v := range survey {
survelm[string(v[choices[i]/4])] += score[choices[i]]
}
if survelm["R"] >= survelm["T"] {
answer += "R"
} else {
answer += "T"
}
if survelm["C"] >= survelm["F"] {
answer += "C"
} else {
answer += "F"
}
if survelm["J"] >= survelm["M"] {
answer += "J"
} else {
answer += "M"
}
if survelm["A"] >= survelm["N"] {
answer += "A"
} else {
answer += "N"
}
return answer
}
약간의 트릭은 choices[i] /4 부분인데
index 4까지는 앞의 값, 그 이후는 뒤의 값을 보도록 한 것이다.
c/c++에서는 int / int 값이 int 이므로 따로 처리할 것이 없다.
Go에는 삼항연산자가 없기 때문에
코드의 라인수를 줄이기 위해서는 for문을 반복하도록 해야 할 듯하다.
나머지는 쉽게 이해할 수 있다.
다른 풀이
아직 신상문제라 그런지 다른 풀이가 아예 없다....
혹시 좋은 방법이 있다면 댓글로 알려주시면 감사하겠습니다.
반응형
'Coding Test > Go' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기 Go Code (0) | 2022.08.23 |
---|---|
[프로그래머스] 2016년 Go Code (0) | 2022.08.20 |
[프로그래머스] 약수의 개수와 덧셈 Go Code (0) | 2022.08.17 |
[프로그래머스] K번째수 Go Code (0) | 2022.08.16 |
[프로그래머스] 체육복 Go Code (0) | 2022.08.10 |
댓글