Coding Test Practice/Python

[프로그래머스 코딩테스트 연습 Lv. 1] 성격 유형 검사하기

y2r1m 2023. 3. 13. 03:08

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

 

프로그래머스

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

programmers.co.kr

 

def solution(survey, choices):
    answer = ''
    scores = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0}
    for s, c in zip(survey, choices):
        if c < 4: # 비동의 선택 시 
            scores[s[0]] += 4 - c # 첫 번째 캐릭터에 점수 부여
        elif c > 4: # 동의 선택 시
            scores[s[1]] += c - 4 # 두 번째 캐릭터에 점수 부여
    
    cat1 = list(scores.items())[::2] # 각 지표에서 첫 번째 유형 (R, C, J, A) (사전 순으로 더 빠름)
    cat2 = list(scores.items())[1::2] # 각 지표에서 두 번째 유형 (T, F, M, N)
    for c1, c2 in zip(cat1, cat2):
        if c1[1] >= c2[1]: # 첫 번째 유형 점수가 더 높거나 같은 경우
            answer += c1[0] # 첫 번째 유형 채택
        else: # 두 번째 유형 점수가 더 높은 경우
            answer += c2[0] # 두 번째 유형 채택
    return answer