지표 번호 | 성격 유형 |
---|---|
1번 지표 | 라이언형(R), 튜브형(T) |
2번 지표 | 콘형(C), 프로도형(F) |
3번 지표 | 제이지형(J), 무지형(M) |
4번 지표 | 어피치형(A), 네오형(N) |
choices | 뜻 |
---|---|
1 | 매우 비동의 (3점) |
2 | 비동의 (2점) |
3 | 약간 비동의 (1점) |
4 | 모르겠음 (0점) |
5 | 약간 동의 (1점) |
6 | 동의 (2점) |
7 | 매우 동의 (3점) |
survey | choices | result |
---|---|---|
["AN", "CF", "MJ", "RT", "NA"] | [5, 3, 2, 7, 5] | "TCMA" |
["TR", "RT", "TR"] | [7, 1, 3] | "RCJA" |
딕셔너리로 표현, 0으로 초기화해두기
scoreDic = {"R":0, "T":0, "C":0, "F":0, "J":0, "M":0, "A":0, "N":0}
선택지번호 : [동의여부, 점수]
choiceDic = {1:[0,3], 2:[0,2], 3:[0,1], 4:[0,0], 5:[1,1], 6:[1,2], 7:[1,3]}
예를들어,
1번 선택지의 경우 '매우 비동의'로 점수는 3점이며 비동의를 나타내므로 [0, 3]
4번 선택지의 경우 '모르겠음'으로 아무도 점수를 얻지않는다. 어차피 0점이 더해지므로 동의여부는 0이든 1이든 상관없다.
지표 번호 | 성격 유형 |
---|---|
1번 지표 | 라이언형(R), 튜브형(T) |
2번 지표 | 콘형(C), 프로도형(F) |
3번 지표 | 제이지형(J), 무지형(M) |
4번 지표 | 어피치형(A), 네오형(N) |
types = ["RT", "CF", "JM", "AN"]
1번 지표부터 차례대로 나타낼수 있는 성격유형을 담았다.
# 유형별 점수 계산
for i in range(len(survey)):
# 선택지 번호를 저장 (ex. choice = 5)
choice = choices[i]
# 해당 선택지에 대한 점수 가져옴(ex. type = 1(동의), score = 1점)
type, score = choiceDic[choice]
# 해당 선택지에 대한 유형을 가져옴 (ex. type = "N")
type = survey[i][type]
# 점수 반영
scoreDic[type] += score # 해당 유형에 대한 점수를 반영 (ex. scoreDic {"N": 1})
# 유형 결정
for t in types: # 차례대로 4개의 유형을 결정
a = t[0]
b = t[1]
scoreA = scoreDic[a]
scoreB = scoreDic[b]
if scoreA < scoreB: result += b
else: result += a
문제조건) 하나의 지표에서 각 성격 유형 점수가 같으면, 두 성격 유형 중 사전 순으로 빠른 성격 유형을 검사자의 성격 유형이라고 판단한다.
types
에 지표를 담을때부터 사전순으로 담아두었다.("NA"가 아닌"AN"로 표현)
따라서 성격유형점수가 같으면 첫번째 문자로 성격유형을 판단한다. ("NA"이면 "N"으로 판단)
def solution(survey, choices):
scoreDic = {"R":0, "T":0, "C":0, "F":0, "J":0, "M":0, "A":0, "N":0}
choiceDic = {1:[0,3], 2:[0,2], 3:[0,1], 4:[0,0], 5:[1,1], 6:[1,2], 7:[1,3]}
types = ["RT", "CF", "JM", "AN"]
result = ''
# 유형별 점수 계산
for i in range(len(survey)):
choice = choices[i]
type, score = choiceDic[choice]
type = survey[i][type]
# 점수 반영
scoreDic[type] += score
# 유형 결정
for t in types:
a = t[0]
b = t[1]
scoreA = scoreDic[a]
scoreB = scoreDic[b]
if scoreA < scoreB: result += b
else: result += a
return result