본문 바로가기

Coding test

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

https://school.programmers.co.kr/learn/courses/30/lessons/118666


소스코드

def solution(survey, choices):
    answer = ''
    mbti = {'R':0,'T':0,'C':0,'F':0,'J':0,'M':0,'A':0,'N':0}
    for idx,pro in enumerate (survey):
        if choices[idx] < 4 :
            mbti[pro[0]] += 4 - choices[idx]
        elif choices[idx] > 4 :
            mbti[pro[1]] += choices[idx] - 4
    answer += 'R' if mbti['R'] >= mbti['T'] else 'T'
    answer += 'C' if mbti['C'] >= mbti['F'] else 'F'
    answer += 'J' if mbti['J'] >= mbti['M'] else 'M'
    answer += 'A' if mbti['A'] >= mbti['N'] else 'N'    
    return answer

풀이

검사하는 대상의 항목은 다음과 같이 4개가 2개중 하나로 되는데

R,T

C,F

J,M

A,N

둘 중 하나의 항목 점수가 높으면 그 유형이 답이 된다.

1. 변수 설정

값을 dictionary에 넣어서 한 이유는 직관적이고 시간도 적게 소요되기 때문이었다

2. 내부 로직

choices[idx]는 선택한 점수인데 4보다 작으면 1,2,3점을 부여하기 위해 (4-choices[idx])를 더해주었고

5 이상이면 마찬가지로 1,2,3점을 부여하기 위해 (choices[idx]-4)를 더해주었다.

3. 결과 도출

결국 각각의 항목에 대해 높은 점수가 답이 되는데 점수가 같으면 알파벳 순서로 답이 결정이 된다고 해서 순서를 고려해서 열거했다.