Algorithm

[Python] 구현 : 프로그래머스 LV.1 성격 유형 검사하기

사용자를 연구하는 개발자 2023. 11. 6. 11:12
반응형

문제 링크

 

프로그래머스

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

programmers.co.kr

문제 해설

성격 유형을 검사하고, 결과를 반환해야 하는 문제이다. 일반적인 검사처럼 선택지마다 점수를 부여하고, 점수를 기준으로 성격 유형을 나눈다. 첫번째로, 생각난 것은 딕셔너리로 {'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0} 유형마다 점수를 저장하는 것이었다.

그리고 나서, 동의 선택지의 기준과 비동의 선택지의 기준을 선택지에서 얻은 점수를 더하면서, 모든 점수 계산이 끝났을때 높은 점수 순으로 성격유형을 만든다고 생각했다. 

def solution(survey, choices):
    types = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
    score = {type: 0 for type in types}

    for s, c in zip(survey, choices):
        if c <= 3:
            score[s[0]] += 4 - c
        elif c >= 5:
            score[s[1]] += c - 4

    result = ""
    for pair in [("R", "T"), ("C", "F"), ("M", "J"), ("A", "N")]:
        if score[pair[0]] == score[pair[1]]:
            result += min(pair)
        else:
            result += pair[0] if score[pair[0]] > score[pair[1]] else pair[1]

    return result