성격 유형 검사하기 _ Lv.1
2022. 9. 6. 23:29ㆍ2022/Programmers_Kakao 기출
흠....굉장히 풀면서도 풀이가 마음에 안드는 문제였다.
다시 최적화해서 풀어볼 예정!
# 매우동의 또는 매우비동의 = 3점
# 동의 또는 비동의 = 2점
# 약간 동의 또는 약간 비동의 = 1점
# 모르겠음 = 0점
# 성격 유형 점수가 같으면, 사전 순으로 빠른 성격 유형을 검사자의 유형이라 판단
def solution(survey, choices):
grade = [0, 3, 2, 1, 0, 1, 2, 3]
TFMNstr = "TFMN"; RCJAstr = "RCJA"; answer = ''
RCJA = [0, 0, 0, 0] # RT , CF, JM, AN
TFMN = [0, 0, 0, 0]
for i in range(len(choices)):
if choices[i] > 4:
if survey[i] == "AN":
TFMN[3]+=grade[choices[i]]
elif survey[i] == "NA":
RCJA[3] += grade[choices[i]]
elif survey[i] == "RT":
TFMN[0]+=grade[choices[i]]
elif survey[i] == "TR":
RCJA[0] += grade[choices[i]]
elif survey[i] == "CF":
TFMN[1]+=grade[choices[i]]
elif survey[i] == "FC":
RCJA[1] += grade[choices[i]]
elif survey[i] == "JM":
TFMN[2]+=grade[choices[i]]
elif survey[i] == "MJ":
RCJA[2] += grade[choices[i]]
elif choices[i] < 4 and choices[i] > 0:
if survey[i] == "AN":
RCJA[3] += grade[choices[i]]
elif survey[i] == "NA":
TFMN[3] += grade[choices[i]]
elif survey[i] == "RT":
RCJA[0] += grade[choices[i]]
elif survey[i] == "TR":
TFMN[0] += grade[choices[i]]
elif survey[i] == "CF":
RCJA[1] += grade[choices[i]]
elif survey[i] == "FC":
TFMN[1] += grade[choices[i]]
elif survey[i] == "JM":
RCJA[2] += grade[choices[i]]
elif survey[i] == "MJ":
TFMN[2] += grade[choices[i]]
for i in range(4):
if TFMN[i] > RCJA[i]:
answer += TFMNstr[i]
elif TFMN[i] < RCJA[i]:
answer += RCJAstr[i]
else:
if TFMNstr[i] < RCJAstr[i]:
answer+=TFMNstr[i]
else:
answer+=RCJAstr[i]
return answer
아래는 나름 최적화한 코드!
def solution(survey, choices):
grade = [0, 3, 2, 1, 0, 1, 2, 3]
TFMNstr = "TFMN"; RCJAstr = "RCJA"; answer = ''
RCJA = [0, 0, 0, 0]; RCJAList = ["R", "C", "J", "A"]
TFMN = [0, 0, 0, 0]; TFMNList = ["T", "F", "M", "N"]
for i in range(len(choices)):
# 점수가 4보다 크면 1번째 인덱스의 성격에 + 점수, 1과 3 사이면 0번째 인덱스의 성격에 + 점수
if choices[i] > 4:
if survey[i][1] in RCJAList:
loc = RCJAList.index(survey[i][1])
RCJA[loc] += grade[choices[i]]
else:
loc = TFMNList.index(survey[i][1])
TFMN[loc] += grade[choices[i]]
elif choices[i] < 4 and choices[i] > 0:
if survey[i][0] in RCJAList:
loc = RCJAList.index(survey[i][0])
RCJA[loc] += grade[choices[i]]
else:
loc = TFMNList.index(survey[i][0])
TFMN[loc] += grade[choices[i]]
for i in range(4):
if TFMN[i] > RCJA[i]:
answer += TFMNstr[i]
elif TFMN[i] < RCJA[i]:
answer += RCJAstr[i]
else:
if TFMNstr[i] < RCJAstr[i]:
answer+=TFMNstr[i]
else:
answer+=RCJAstr[i]
return answer
'2022 > Programmers_Kakao 기출' 카테고리의 다른 글
두 큐 합 같게 만들기 _ Lv.2* (0) | 2022.09.10 |
---|---|
크레인 인형뽑기 게임 _ Lv.1 (0) | 2022.09.09 |
키패드 누르기 _ Lv.1 (0) | 2022.09.06 |
숫자 문자열과 영단어 _ Lv.1 (0) | 2022.09.05 |
신규 아이디 추천 _ Lv.1 (0) | 2022.09.04 |