[프로그래머스] 성격 유형 검사하기 Lv.1 - [파이썬/python]
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
# 프로그래머스 | 성격 유형 검사하기
def solution(survey, choices):
mbti_score = {
"R" : 0, # 1번 지표, 라이언형
"T" : 0, # 1번 지표, 튜브형
"C" : 0, # 2번 지표, 콘형
"F" : 0, # 2번 지표, 프로도형
"J" : 0, # 3번 지표, 제이지형
"M" : 0, # 3번 지표, 무지형
"A" : 0, # 4번 지표, 어피치형
"N" : 0 # 4번 지표, 네오형
}
choice_score = {
1 : 3, # 매우 비동의
2 : 2, # 동의
3 : 1, # 약간 동의
4 : 0, # 모르겠음
5 : 1, # 약간 동의
6 : 2, # 동의
7 : 3 # 매우 동의
}
result = ''
#["FC"]을 예로 들겠습니다.
#성격유형점수 부여시 숫자가 4보다 작으면 왼쪽 type("F")에 점수부여
#성격유형점수 부여시 숫자가 5보다 크거나 같으면 오른쪽 type("C")에 점수부여
for type_, choice in zip(survey, choices):
if choice < 4:
mbti_score[type_[0]] += choice_score[choice]
elif choice >= 5:
mbti_score[type_[1]] += choice_score[choice]
#mbti_score의 key들을 뽑아 ["R","T","C","F","J","M","A","N"] 만들기
mbti_keys = list(mbti_score.keys())
#예) {'R': 6, 'T': 1, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0}
#만든 list(mbti_keys())로 0~1 / 2~3 / 4~5 / 6~7 2개씩 끊어서 비교하기
for left, right in zip(mbti_keys[::2], mbti_keys[1::2]):
# R와 T / C와 F / J와 M / A와 M을 점수비교하여 더 큰 것을 result 추가
# 점수동일시 왼쪽에 있는 alp을 추가
if mbti_score[left] >= mbti_score[right]:
result += left
else:
result += right
return result
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 행렬의 덧셈 - Lv.1 (20) | 2023.08.17 |
---|---|
[프로그래머스] 문자열 나누기 - Lv.1 (15) | 2023.08.16 |
[프로그래머스] 가장 가까운 같은 글자 - Lv.1 (15) | 2023.08.16 |
[프로그래머스] 수 조작하기 1 - Lv.0 (14) | 2023.08.16 |
[프로그래머스] 정수 내림차순으로 배치하기 - Lv.1 (15) | 2023.08.15 |