기본적으로 풀려 했던 방식이 잘 안돼서 print 찍어가며 어거지로 했더니 기괴한 코드가 탄생...
def solution(survey, choices):
answer = ''
#지표별 성격유형
personality_type = {
'1':{
"R" : 0,
"T" : 0
},
'2':{
"C" : 0,
"F" : 0
},
'3':{
"J" : 0,
"M" : 0
},
'4':{
"A" : 0,
"N" : 0
}
}
for idx, surv in enumerate(survey):
if 'R' in surv:
c = '1'
elif 'C' in surv:
c = '2'
elif 'J' in surv:
c = '3'
elif 'A' in surv:
c = '4'
# 기준점 4를 토대로 점수 계산
if choices[idx] < 4:
personality_type[c][surv[0]] += abs(4 - choices[idx])
elif choices[idx] > 4:
personality_type[c][surv[1]] += abs(4 - choices[idx])
sort_type = sorted(personality_type.items(), key=lambda x : x[1].items())
print("sort_type : ", sort_type)
t_result = []
for st in sort_type:
t = sorted(st[1].items(), key=lambda x : [-x[1],x[0]])
print("t : ", t)
t_result.append(t)
result = [x[0][0] for x in t_result]
answer = "".join(result)
return answer
다른 팀원 코드 보고 훨씬 깔끔하게 바꿀 수 있었다...
def solution(survey, choices):
answer = ''
#지표별 성격유형
personality_type = {
"R" : 0,
"T" : 0,
"C" : 0,
"F" : 0,
"J" : 0,
"M" : 0,
"A" : 0,
"N" : 0
}
pivot = ['RT','CF','JM','AN']
for idx, surv in enumerate(survey):
# 기준점 4를 토대로 점수 계산
if choices[idx] < 4:
personality_type[surv[0]] += abs(4 - choices[idx])
elif choices[idx] > 4:
personality_type[surv[1]] += abs(4 - choices[idx])
for p in pivot:
if personality_type[p[0]] >= personality_type[p[1]]:
answer += p[0]
else:
answer += p[1]
return answer