def solution(survey, choices):
answer = ''
score = {1:3, 2:2, 3:1, 4:0, 5:1, 6:2, 7:3}
mbti = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0}
mbti_lst=['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
for i in range(len(survey)):
if choices[i] < 4:
mbti[survey[i][0]] += score[choices[i]]
elif choices[i] > 4:
mbti[survey[i][1]] += score[choices[i]]
for i in range(0, len(mbti_lst), 2):
if mbti[mbti_lst[i]] > mbti[mbti_lst[i+1]]:
lst = [mbti_lst[i], mbti_lst[i+1]]
answer += mbti_lst[i]
elif mbti[mbti_lst[i]] < mbti[mbti_lst[i+1]]:
answer += mbti_lst[i+1]
elif mbti[mbti_lst[i]] == mbti[mbti_lst[i+1]]:
answer += min(mbti_lst[i], mbti_lst[i+1])
return answer
딕셔너리를 이용 한 풀이
1. choices의 값이 1, 2, 3이면 survey[i]의 0번 인덱스가 비동의를 한 경우 이므로 해당하는 딕셔너리 값 증가
2. choices의 값이 5, 6, 7이면 survey[i]의 1번 인덱스가 동의를 한 경우 이므로 해당하는 딕셔너리 값 증가
3. 문자만을 담은 배열을 새로 만들고, 2칸씩 증가하며 딕셔너리 값을 비교
4. 같을 경우 min을 통해 아스키코드가 더 작은 값을 비교하여 가져온다.
'Programmers' 카테고리의 다른 글
[프로그래머스 / 파이썬 풀이] 개인정보 수집 유효기간 (0) | 2023.01.25 |
---|---|
[프로그래머스 / 파이썬 풀이] 숫자 문자열과 영단어 (0) | 2023.01.20 |
[프로그래머스 / 파이썬 풀이] 숫자 짝꿍 (0) | 2023.01.18 |
[프로그래머스 / 파이썬 풀이] 콜라 문제 (0) | 2023.01.17 |
[프로그래머스 / 파이썬 풀이] 옹알이(2) (0) | 2023.01.15 |