반응형
문제 링크
문제 해설
성격 유형을 검사하고, 결과를 반환해야 하는 문제이다. 일반적인 검사처럼 선택지마다 점수를 부여하고, 점수를 기준으로 성격 유형을 나눈다. 첫번째로, 생각난 것은 딕셔너리로 {'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0} 유형마다 점수를 저장하는 것이었다.
그리고 나서, 동의 선택지의 기준과 비동의 선택지의 기준을 선택지에서 얻은 점수를 더하면서, 모든 점수 계산이 끝났을때 높은 점수 순으로 성격유형을 만든다고 생각했다.
def solution(survey, choices):
types = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
score = {type: 0 for type in types}
for s, c in zip(survey, choices):
if c <= 3:
score[s[0]] += 4 - c
elif c >= 5:
score[s[1]] += c - 4
result = ""
for pair in [("R", "T"), ("C", "F"), ("M", "J"), ("A", "N")]:
if score[pair[0]] == score[pair[1]]:
result += min(pair)
else:
result += pair[0] if score[pair[0]] > score[pair[1]] else pair[1]
return result