풀이 소요 시간 18분
생각보다 깔끔하게 풀렸다.
def solution(survey, choices):
answer = ''
dict = {'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0}
for char, choi in zip(survey, choices):
a, b = char[0], char[1]
if choi < 4:
dict[a] += (4 - choi)
elif choi > 4:
dict[b] += (choi - 4)
for i in range(4):
a = list(dict.items())[2*i]
b = list(dict.items())[2*i+1]
if a[1] < b[1]:
answer += b[0]
elif a[1] > b[1]:
answer += a[0]
else:
answer += min(a[0], b[0])
return answer
survey의 원소는 "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" 중 하나입니다.
이 문구를 어떻게 처리할까를 조금 고민했는데, 그냥 딕셔너리로 처리하고,
문자열 앞 글자/뒷 글자로 뽀개버려서 비교해 딕셔너리의 본인 값에 +점수 해주는 방식으로 처리했다.
answer = ''
dict = {'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0}
for char, choi in zip(survey, choices):
a, b = char[0], char[1]
if choi < 4:
dict[a] += (4 - choi)
elif choi > 4:
dict[b] += (choi - 4)
각 지표에서 더 높은 점수를 받은 성격 유형이 검사자의 성격 유형이라고 판단합니다.
단, 하나의 지표에서 각 성격 유형 점수가 같으면, 두 성격 유형 중 사전 순으로 빠른 성격 유형을 검사자의 성격 유형이라고 판단합니다.
딕셔너리 설정 시 2개씩 차례대로 설정하게 했기 때문에 8개의 옵션을 2개씩 끊어가며 서로를 비교했다.
단순하게 크기 비교해서 조건에 맞게 정답문자열에 더해지게 설정했다.
for i in range(4):
a = list(dict.items())[2*i]
b = list(dict.items())[2*i+1]
if a[1] < b[1]:
answer += b[0]
elif a[1] > b[1]:
answer += a[0]
else:
answer += min(a[0], b[0])
'CodingTest > Programmers' 카테고리의 다른 글
[ Programmers / 파이썬 ] 정수 삼각형 (0) | 2023.03.17 |
---|---|
[ 프로그래머스 ] 두 큐 합 같게 만들기 (0) | 2022.11.04 |
[ 프로그래머스 ] 양궁대회 (0) | 2022.11.02 |
[ 프로그래머스 ] 퍼즐 조각 채우기 (0) | 2022.10.31 |
[ 프로그래머스 ] 할인 행사 (0) | 2022.10.30 |