본문 바로가기
프로그래머스

프로그래머스: 성격 유형 검사하기 | Python

by sxlvxrjxms2s2itsmes2s2 2024. 1. 26.

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

 

프로그래머스

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

programmers.co.kr



입출력 예 #1

각 지표에서 더 점수가 높은 T,C,M이 성격 유형입니다.하지만, 4번 지표는 1점으로 동일한 점수입니다. 따라서, 4번 지표의 성격 유형은 사전순으로 빠른 A입니다.
따라서 "TCMA"를 return 해야 합니다.


제한사항
- survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
- survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.

해당 제한사항이 코드를 간결하게 만들어줍니다.

 

 

1. 풀이

def solution(survey, choices):
    # 1. 성격유형 dic 만들기
    personality = {'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] <= 3:
            personality[survey[i][0]] += 4 - choices[i]
        elif choices[i] >= 5:
            personality[survey[i][1]] += choices[i] - 4
       
    answer = ''
    answer += 'T' if personality['R'] < personality['T'] else 'R'
    answer += 'F' if personality['C'] < personality['F'] else 'C'
    answer += 'M' if personality['J'] < personality['M'] else 'J'
    answer += 'N' if personality['A'] < personality['N'] else 'A'

    return answer

 

- choices가 3이하일 경우는 비동의관련 선택지로 survey의 0번째 문자를 가르킵니다.

- personality['R'] += 4를 할 경우 R의 value가 4로 업데이트됩니다.

- answer 부분에서 T의 value가 큰 경우만 T를 answer에 추가할 수 있습니다. 값이 같을 경우나, T가 더 작을 경우 모두 R을 answer에 추가합니다.