[Python][프로그래머스 Lv.1] 성격 유형 검사하기

1jinju·2023년 9월 6일
0

프로그래머스

목록 보기
3/14

2022 KAKAO TECH INTERNSHIP
성격 유형 검사하기

def solution(survey, choices):
    answer = ''
    dic = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0} # 성격 유형 딕셔너리
    
    # 4보다 작거나 클 때 해당 성격 유형 딕셔너리에 점수를 더해줌
    for i in range(len(survey)):
        if choices[i] > 4:
            for j in dic.keys():
                if survey[i][1] == j: 
                    dic[j] += choices[i] - 4
        elif choices[i] < 4:
            for j in dic.keys():
                if survey[i][0] == j:
                    dic[j] += 4 - choices[i]
                    
    # 지표마다 더 높은 점수를 받은 성격 유형 계산
    for i in range(0, len(dic), 2):
        if dic[list(dic.keys())[i]] >= dic[list(dic.keys())[i+1]]:
            answer += list(dic.keys())[i] # i번째 키를 answer에 추가
        else:
            answer += list(dic.keys())[i+1]
    return answer

파이썬 Dictionary 사용법에서 문법 참고

딕셔너리에서 특정 키 값만 가져오기

dic = {'R':0, 'T':0}
print(dic.keys()[0]) # dict_keys가 리스트가 아니므로 에러가 남

리스트로 한 번 변환해준 뒤에 출력하면 정상적으로 출력된다.

print(list(dic.keys())[0]) # 'R'

다른 사람의 풀이

def solution(survey, choices):
    my_dict = {"RT":0,"CF":0,"JM":0,"AN":0}

    # 각 survey 항목과 choices 항목을 짝 지어 비교
    for A, B in zip(survey, choices):
        # A가 딕셔너리의 키로 등록되어 있지 않은 경우
        if A not in my_dict.keys():
            A = A[::-1] # A를 뒤집음
            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] # 값이 양수이면 두 번째 문자를 result에 추가
        elif my_dict[name] < 0:
            result += name[0] # 값이 음수이면 첫 번째 문자를 result에 추가
        else:
            result += sorted(name)[0]
    return result
profile
아자잣

0개의 댓글