📖 2022 KAKAO TECH INTERNSHIP > 성격 유형 검사하기

📖What I thought

첨엔 말이 ㅈㄴ 복잡해서 풀기 싫었지만?? 일단 중요한 조건은 지표 안에서 높은점수+사전순

survey는 TR 이런 식의 형식, choice는 숫자 형식 survey가 TR로 나왔다면 T가 negative 답변일 때 점수 R이 positive 답변일 때 점수. 반대로 RT로 나왔다면 R이 negative, T가 positive 점수를 매우 동의~매우 비동의까지 어떻게 줘야하지 ? 하다가 선택 항목을 4로 나눠서 몫이 1보다 작으면 survey[0], 크면 survey[1], 같으면 X해서 점수 주기

지표끼리 묶는 걸 어떻게 해야할 지 여러 고민을 했음.. 근데 이걸 3.6부터는 딕셔너리 순서가 보장된다는 점을 이용해 그냥 리스트로 타입캐스팅하고 반복문으로 2개씩 돌면서 뒤에 꺼랑 비교!해서 지표 안에서 비교 가능하도록 했음 (각 지표 안에서는 딕셔너리에 저장 순서를 사전 순으로 미리 저장해둠)

📖풀이

📎구현

def solution(survey, choices):
    scores = {1: 3, 2: 2, 3: 1, 4: 0, 5: 1, 6: 2, 7: 3} # choice: score negative: 1~3 positive: 5~7
    earned = {"R": 0, "T": 0, "C": 0, "F": 0, "J": 0, "M": 0, "A": 0, "N": 0}
    
    # check earned scores
    for s, c in zip(survey, choices):
        ne, po = s[0], s[1]
        div = c / 4
        if div < 1:
            earned[ne] += scores[c]
        elif div > 1:
            earned[po] += scores[c]
        else:
            continue
    
    # check mbti
    mbti = ''
    earned = list(earned.items())
    for i in range(0, len(earned), 2):
        if earned[i][1] >= earned[i+1][1]:
            mbti += earned[i][0]
        else:
            mbti += earned[i+1][0]
    
    return mbti

📖What I learned

  1. 복잡해 보여도 순서대로 차근차근 풀어가면 문제 없다!

📖관련 지식