https://school.programmers.co.kr/learn/courses/30/lessons/118666
소스코드
def solution(survey, choices):
answer = ''
mbti = {'R':0,'T':0,'C':0,'F':0,'J':0,'M':0,'A':0,'N':0}
for idx,pro in enumerate (survey):
if choices[idx] < 4 :
mbti[pro[0]] += 4 - choices[idx]
elif choices[idx] > 4 :
mbti[pro[1]] += choices[idx] - 4
answer += 'R' if mbti['R'] >= mbti['T'] else 'T'
answer += 'C' if mbti['C'] >= mbti['F'] else 'F'
answer += 'J' if mbti['J'] >= mbti['M'] else 'M'
answer += 'A' if mbti['A'] >= mbti['N'] else 'N'
return answer
풀이
검사하는 대상의 항목은 다음과 같이 4개가 2개중 하나로 되는데
R,T
C,F
J,M
A,N
둘 중 하나의 항목 점수가 높으면 그 유형이 답이 된다.
1. 변수 설정
값을 dictionary에 넣어서 한 이유는 직관적이고 시간도 적게 소요되기 때문이었다
2. 내부 로직
choices[idx]는 선택한 점수인데 4보다 작으면 1,2,3점을 부여하기 위해 (4-choices[idx])를 더해주었고
5 이상이면 마찬가지로 1,2,3점을 부여하기 위해 (choices[idx]-4)를 더해주었다.
3. 결과 도출
결국 각각의 항목에 대해 높은 점수가 답이 되는데 점수가 같으면 알파벳 순서로 답이 결정이 된다고 해서 순서를 고려해서 열거했다.
'Coding test' 카테고리의 다른 글
[프로그래머스/Lv.1/파이썬] 다트게임 (0) | 2024.03.08 |
---|---|
[프로그래머스/Lv.1/파이썬] 키패드 누르기 (0) | 2024.03.07 |
[백준/9465/파이썬] 스티커 - DP (0) | 2024.02.08 |
[백준/1543/파이썬] 문서 검색 - Greedy (0) | 2024.02.05 |
[백준/20044/파이썬] Project Teams - Greedy (2) | 2024.02.05 |