[프로그래머스] 성격 유형 검사하기(Python)

vvo_ter·2022년 9월 19일
0

프로그래머스

목록 보기
2/28
post-thumbnail

💻 문제 - Lv.1

2022 KAKAO TECH INTERNSHIP


👉 제출 코드

지표 번호 순서대로 성격유형을 dic의 key로, item을 0으로 초기화하여 접근이 쉽도록 한다.

def solution(survey, choices):
    answer = ''
    dic = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0}
    for i in range(len(survey)):
        if choices[i] < 4:
            dic[survey[i][0]] += 4-choices[i]
        else:
            dic[survey[i][1]] += choices[i]-4
            
    if dic['R'] >= dic['T']:
        answer += 'R'
    else:
        answer += 'T'
    
    if dic['C'] >= dic['F']:
        answer += 'C'
    else:
        answer += 'F'
        
    if dic['J'] >= dic['M']:
        answer += 'J'
    else:
        answer += 'M'
        
    if dic['A'] >= dic['N']:
        answer += 'A'
    else:
        answer += 'N'
        
    return answer

배열의 길이만큼 선택한 점수가 4보다 큰 경우와 작은 경우로 나눠서 dic에 점수를 더한다.

동일한 점수인 경우 사전순으로 빠른 성격 유형이므로 4개의 지표 순서대로 조건문(크거나 같을 때)을 사용하여 성격 유형을 answer에 저장한다.


🙏 다른 사람의 풀이 보기

def solution(survey, choices):

    my_dict = {"RT":0,"CF":0,"JM":0,"AN":0}
    for A,B in zip(survey,choices):
        if A not in my_dict.keys():
            A = A[::-1] # 역순으로
            my_dict[A] -= B-4
        else:
            my_dict[A] += B-4

    result = ""
    for name in my_dict.keys():
        if my_dict[name] > 0:
            result += name[1]
        elif my_dict[name] < 0:
            result += name[0]
        else:
            result += sorted(name)[0]

    return result
  • survey와 같은 꼴로 dic을 정의하여 코드의 길이를 줄일 수 있다: "RT"와 "TR"을 같은 경우로 본다.
  • choices[i] == 4인 경우를 조건으로 빼서 연산을 줄이고 정확성을 높일 수 있다.
  • 음수와 양수, 0일 때로 나누어 성격 유형을 answer에 저장한다.
profile
's Coding Memory

0개의 댓글