Programmers

[프로그래머스 / 파이썬 풀이] 성격 유형 검사하기

Hoo_Dev 2023. 1. 19. 11:49
def solution(survey, choices):
    answer = ''
    score = {1:3, 2:2, 3:1, 4:0, 5:1, 6:2, 7:3}
    mbti = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0}
    mbti_lst=['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
    for i in range(len(survey)):
        if choices[i] < 4:
            mbti[survey[i][0]] += score[choices[i]]
        elif choices[i] > 4:
            mbti[survey[i][1]] += score[choices[i]]

    for i in range(0, len(mbti_lst), 2):
        if mbti[mbti_lst[i]] > mbti[mbti_lst[i+1]]:
            lst = [mbti_lst[i], mbti_lst[i+1]]
            answer += mbti_lst[i]
        elif mbti[mbti_lst[i]] < mbti[mbti_lst[i+1]]:
            answer += mbti_lst[i+1]
        elif mbti[mbti_lst[i]] == mbti[mbti_lst[i+1]]:

            answer += min(mbti_lst[i], mbti_lst[i+1])
            
    return answer

딕셔너리를 이용 한 풀이

1. choices의 값이 1, 2, 3이면 survey[i]의 0번 인덱스가 비동의를 한 경우 이므로 해당하는 딕셔너리 값 증가

2. choices의 값이 5, 6, 7이면 survey[i]의 1번 인덱스가 동의를 한 경우 이므로 해당하는 딕셔너리 값 증가

3. 문자만을 담은 배열을 새로 만들고, 2칸씩 증가하며 딕셔너리 값을 비교

4. 같을 경우 min을 통해 아스키코드가 더 작은 값을 비교하여 가져온다.