본문 바로가기

알고리즘풀이/프로그래머스

[성격 유형 검사하기]

👉 사용 언어 : 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