[코딩테스트] 001. 2022 KAKAO TECH INTERNSHIP - 성격 유형 검사하기(Lv. 1)

KwanHong·2022년 11월 22일
1

문제

링크 📎
2022 카카오 테크 인턴십 - 성격 유형 검사하기

Code ⌨️

def solution(survey, choices):
    score = {'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0}
    for s, c in zip(survey, choices):
        # ('RT', 5), ('TR', 3)
        if c > 4:
            score[s[1]] += (c-4)
        elif c < 4:
            score[s[0]] += abs(c-4)
    
    first = 'R' if score['R'] >= score['T'] else 'T'
    second = 'C' if score['C'] >= score['F'] else 'F'
    third = 'J' if score['J'] >= score['M'] else 'M'
    fourth = 'A' if score['A'] >= score['N'] else 'N'
    
    answer = first+second+third+fourth
    return answer

Notes 📝

  • 질문마다 판단 지표 정보를 담은 survey 리스트와 해당 질문의 질문에 대응하는 답인 choices는 짝이 지어져야 하는 정보
  • 질문에 대응하는 답을 체크하면서 네 개의 지표에 해당하는 점수를 체크
  • choices의 값으로 결정되는 성격 유형 점수는 -3에서 +3에 해당하는 스케일(scale)을 가짐
  • survey 리스트와 choices 리스트를 zip으로 튜플화하여 정보를 페어링하여 순차적으로 체크
  • 각 지표는 성격 유형을 나타내는 영문자가 사전순으로 정의되어 있음(RT / CF / JM / AN)
  • 선택지의 값이 4 초과(약간 동의)일 때는 지표의 두 번째 성격 유형에 해당하는 값인 score[s[1]]을 참조하여 점수 scale만큼 누적 (RT에서 T)
  • 선택지의 값이 4 이하인 경우, 질문에 해당하는 지표의 첫 번째 성격 유형(RT에서 R)에 해당하는 값인 score[s[0]]을 참조하여 반대 scale만큼 값을 누적
profile
본질에 집중하려고 노력합니다. 🔨

0개의 댓글