본문 바로가기

알고리즘

프로그래머스) 성격 유형 검사-python

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제는 MBTI에서 영감을 받아 카카오에서 제작한 문제같다.

def solution(survey, choices):
    answer = ''
    dict = {'R':0,'T':0,'C':0,'F':0,'J':0,'M':0,'A':0,'N':0}
    for i in range(len(choices)):
        if choices[i] > 4:
            dict[survey[i][1]] += choices[i] % 4
        if choices[i] < 4:
            dict[survey[i][0]] += (choices[i] * 3) % 4
    type_key = list(dict.keys())
    for i in range(0,len(type_key),2):
        if dict[type_key[i]] > dict[type_key[i+1]]:
            answer += type_key[i]
        if dict[type_key[i]] < dict[type_key[i+1]]:
            answer += type_key[i+1]
        if dict[type_key[i]] == dict[type_key[i+1]]:
            answer += type_key[i]
    return answer

 

라이언형과 튜브형, 콘형과 프로도형, 즉 R/T, C/F, J/M, A/N은 고정된 변수다.

그러므로 각 알파벳과 점수로 딕셔너리를 선언하고

choices에서 4를 기준으로 점수를 매긴다. (4는 0점)

 

그 다음 키값을 뽑아내 2개, 즉 R과 T 중에서, C와 F중에서.... A와 N 중에서 큰 값을 골라내 return하면 된다.

점수가 같을 경우 알파벳 순서에 맞게 return하면 되지만 이미 선언 단계에서 순서를 맞게 해줬으므로 건너뛰어도 무방하다.