👉 사용 언어 : PYTHON3
✅ Solution
< 30분 풀이 완료 >
def solution(survey, choices):
answer = ''
type = ["T", "R", "F", "C", "M", "J", "A", "N"]
score = {"T":0, "R":0, "F":0, "C":0, "M":0, "J":0, "A":0, "N":0}
for i in range(len(choices)):
if choices[i] < 4:
score[list(survey[i])[0]] += (4-choices[i])
elif choices[i] > 4:
score[list(survey[i])[1]] += (choices[i]-4)
for j in range(0, len(type), 2):
if score[type[j]] > score[type[j+1]]:
answer += type[j]
elif score[type[j]] < score[type[j+1]]:
answer += type[j+1]
else:
answer += min(type[j], type[j+1])
return answer
👉 아이디어
- 성격 유형 8개가 들어있는 배열을 생성한다.
- 각각의 성격 유형과 스코어가 맵핑되어있는 딕셔너리를 생성한다.
- choices 배열 내 점수를 4점 기준으로 동의 / 비동의를 구분하여 해당 유형 스코어에 카운트한다.
- 점수 < 4 : 비동의 ( survey 원소의 첫 번째 캐릭터 )
- 점수 > 4 : 동의 ( survey 원소의 두 번째 캐릭터 )
- 0부터 배열 길이만큼 +2씩 반복문을 돌려 점수를 비교한다.
- "T"와 "R", "F"와 "C", "M"과 "Z", "A"와 "N"
- 점수가 더 높은 성격 유형을 정답 문자열에 추가한다.
- 만약 점수가 같다면 두 문자 중 작은 (= 사전순으로 더 빠른) 문자를 정답 문자열에 추가한다.
- 정답 배열을 리턴한다.
👉 알게된 것
" min( )과 max( )는 숫자가 아닌 문자에도 적용 가능하며 배열을 오름차순/내림차순 정렬하는 것이 아닌 사전순으로 더 빠른/느린 하나의 문자를 리턴할 때는 이 2개의 함수를 사용할 수 있다. "
'알고리즘풀이 > 프로그래머스' 카테고리의 다른 글
| [1/18] Kakao Internship 기출문제 풀이 (0) | 2024.01.11 |
|---|---|
| [12/5] Lv1. (0) | 2023.12.02 |
| [11/22] Lv1. (2) | 2023.11.18 |
| [11/16] Lv1. (0) | 2023.11.10 |
| [11/8] Lv1. (0) | 2023.11.04 |