Algorithm/Programmers
[프로그래머스] 성격 유형 검사하기
밍츠
2022. 8. 22. 01:37
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
문제 그대로를 풀이로 풀어나갔다
- 선택지 점수에 대한 딕셔너리, 지표 번호에 대한 성격 유형 딕셔너리, 성격 유형별 점수 딕셔너리를 만든다
- survey를 반복문으로 돌면서 해당 인덱스의 choice가 4 미만이면 해당 성격 유형에 비동의 점수를 더해준다.
- 4 이상이면 해당 성격 유형에 동의 점수를 더해준다.
-> 이 과정 좀 더 깔끔하게 가능할 듯
- 지표 번호에 대한 성격 유형 딕셔너리를 순회하면서 지표별로 성격 유형별 점수 딕셔너리에 대한 점수 값이 큰 성격 유형을 answer에 더해준다.
-> 알파벳 순은 딕셔너리에 저장할 때 알파벳 순으로 저장하여 따로 처리 x
def solution(survey, choices):
answer = ''
score = {1 : 3, 2:2,3:1,4:0,5:1,6:2,7:3}
q = {1:["R","T"],2:["C","F"],3:["J","M"],4:["A","N"]}
me = {'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:
me[survey[i][0]] += score[choices[i]]
else:
me[survey[i][1]] += score[choices[i]]
for key, value in q.items():
if me[value[0]] >= me[value[1]]:
answer+=value[0]
else:
answer+=value[1]
return answer
다른 풀이
- 풀이 방식은 똑같은데 딕셔너리 선언을 좀 더 간결화했다.
from collections import defaultdict
def solution(survey, choices):
indicator = [('R', 'T'), ('C', 'F'), ('J', 'M'), ('A', 'N')]
answer = ''
personality = defaultdict(int)
for s, c in zip(survey, choices):
if c < 4:
personality[s[0]] += (4 - c)
elif c > 4:
personality[s[1]] += (c - 4)
for i in indicator:
if personality[i[0]] >= personality[i[1]]:
answer += i[0]
else:
answer += i[1]
return answer