(코딩 테스트) 성격 유형검사

꼼댕이·2022년 9월 22일
0

코딩 테스트

목록 보기
2/2

프로그래머스 2022 카카오 인턴쉽

성격유형검사

기본적으로 풀려 했던 방식이 잘 안돼서 print 찍어가며 어거지로 했더니 기괴한 코드가 탄생...

def solution(survey, choices):
    answer = ''
    
    #지표별 성격유형
    personality_type = {
        '1':{
            "R" : 0,
            "T" : 0
        },
        '2':{
            "C" : 0,
            "F" : 0
        },
        '3':{
            "J" : 0,
            "M" : 0
        },
        '4':{
            "A" : 0,
            "N" : 0
        }
    }
    
    for idx, surv in enumerate(survey):
        if 'R' in surv:
            c = '1'
        elif 'C' in surv:
            c = '2'
        elif 'J' in surv:
            c = '3'
        elif 'A' in surv:
            c = '4'            
        
        # 기준점 4를 토대로 점수 계산
        if choices[idx] < 4:
            personality_type[c][surv[0]] += abs(4 - choices[idx])
        elif choices[idx] > 4:
            personality_type[c][surv[1]] += abs(4 - choices[idx])
            
    sort_type = sorted(personality_type.items(), key=lambda x : x[1].items())
    print("sort_type : ", sort_type)
    
    t_result = []
    for st in sort_type:
        t = sorted(st[1].items(), key=lambda x : [-x[1],x[0]])
        print("t : ", t)
        t_result.append(t)
        
    result = [x[0][0] for x in t_result]
    
    answer = "".join(result)
    return answer





다른 팀원 코드 보고 훨씬 깔끔하게 바꿀 수 있었다...

def solution(survey, choices):
    answer = ''
    
    #지표별 성격유형
    personality_type = {
            "R" : 0,
            "T" : 0,
            "C" : 0,
            "F" : 0,
            "J" : 0,
            "M" : 0,
            "A" : 0,
            "N" : 0
    }
    
    pivot = ['RT','CF','JM','AN']
    
    for idx, surv in enumerate(survey):
        # 기준점 4를 토대로 점수 계산
        if choices[idx] < 4:
            personality_type[surv[0]] += abs(4 - choices[idx])
        elif choices[idx] > 4:
            personality_type[surv[1]] += abs(4 - choices[idx])
            
    for p in pivot:
        if personality_type[p[0]] >= personality_type[p[1]]:
            answer += p[0]
        else:
            answer += p[1]
    
    return answer
profile
사람을 연구하는 공돌이

0개의 댓글