Python/Algorithm

[프로그래머스] 성격 유형 검사 - Python

언킴 2023. 8. 24. 20:02
반응형

해당 문제는 2022년 카카오 코딩 테스트에 나온 문제다. 

 

내가 접근한 방식은 먼저 각 index를 저장하는 리스트와 딕셔너리를 생성하고, survey를 입력으로 받아서 분류하는 형태로 진행하였다. 

def solution(survey, choices):
    types = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
    answers = [0] * len(types)
    results = {t:i for i, t in enumerate(types)}

    for s, value in zip(survey, choices):
        a, b = s
        if value >= 4:
            answers[results[b]] += value - 4
        
        else:
            answers[results[a]] += 4 - value
    
    outs = ''
    for idx in range(0, len(answers), 2):
        if answers[idx] >= answers[idx+1]:
            outs += types[idx]
        else:
            outs += types[idx+1]

    return outs

예를 들어, 입력이 "RT" 라고 하면, 4점을 기준으로 4점보다 큰 경우 T에 점수를 부여하고, 4점보다 작은 경우 R에 점수를 부여하는 형태다. 만약에 두 유형의 값이 일치한다면 알파벳 순으로 앞에 오는 문자를 출력한다. 

 

처음 접근할 때 시간 초과가 뜰 것 같았으나, 문제 없이 잘 풀어졌다.