[프로그래머스] 2022 KAKAO INTERNSHIP 1번 성격 유형 검사하기 by Python(파이썬)

윤소영·2023년 7월 21일
0

프로그래머스

목록 보기
1/1

✨ 문제

문제 링크 → 프로그래머스 2022 KAKAO INTERNSHIP 1번 성격 유형 검사하기

성격 유형 지표를 저장한 survey와 검사자가 정한 선택을 나타내는 choices를 전달받은 후, 문제에 주어진 점수를 매겨 검사자의 최종 성격 유형을 리턴하는 문제이다.

✨ 코드

def select(metric, choice):
    if metric[choice[0]] == metric[choice[1]]:
        return choice[0]
    elif metric[choice[0]] > metric[choice[1]]:
        return choice[0]
    else:
        return choice[1]

def solution(survey, choices):
    answer = ''
    metric = {'R': 0, 'T': 0, 'C': 0, 'F' : 0, 'J' : 0, 'M': 0, 'A' : 0, 'N' : 0}
    score = {1: 3, 2:2, 3:1, 4:0, 5:1, 6:2, 7:3}
    for i in range(len(survey)):
        c1, c2 = survey[i][0], survey[i][1]
        if choices[i] > 4:
            metric[c2] += score[choices[i]]
        elif choices[i] < 4:
            metric[c1] += score[choices[i]]
    answer += select(metric, 'RT')
    answer += select(metric, 'CF')
    answer += select(metric, 'JM')
    answer += select(metric, 'AN')
    return answer

✨ 풀이

  • 문제를 다 읽고 가장 먼저 생각난 거는 딕셔너리 활용하는 것이다. 각 지표에 대한 점수를 저장하는 딕셔너리 metric과 문제에서 주어진 각 선택지에 대한 점수를 저장한 딕셔너리인 score를 만들었다. 이후 각 survey의 원소(검사를 받는 성격 유형 지표)에 대해 4보다 크면 2번째 성격 유형 지표(c2)에 점수를 더하고, 4보다 작으면 1번째 성격 유형 지표(c1)에 점수를 더하도록 했다. → 문제에 주어진 내용이다.

  • 최종 metric 딕셔너리가 결정되면 RT, CF, JM, AN의 지표들 중 하나씩을 결정하기 위해 select 함수를 호출하도록 했다. 점수를 비교해 더 큰 쪽의 지표 하나를 리턴하고, 만약 점수가 같으면 사전 순 중 앞쪽(알파벳 순으로 전달되므로 결국 choice[0]과 같음)을 리턴하도록 했다.

👩🏻‍💻 후기

대략 20분 정도 걸려서 푼 것 같다. 문제 읽고 이해하는데 거의 12~3분이었고,, 푸는 데 7~8분 정도였다. Lv.1이라고 적혀져 있었던 만큼 가장 풀기 쉬웠던 문제이다. 다른 사람들의 경우 한글로 푸신 분도 있었고, survey 원소가 알파벳 순이 아니면 [::-1]을 사용해 역순으로 바꾼 후 주어진 점수-4를 빼서 코드를 작성하신 분도 있었다. 굉장히 다양한 풀이가 있었던 것 같다. 개인적으로는 앞에서 말한 것 중 두번째 코드가 굉장히 기억에 남는다.
내일은 2번 Lv.2인 두 큐 합 같게 만들기를 풀어봐야겠다.

profile
Major in IT Engineering(2021.03~)

1개의 댓글

comment-user-thumbnail
2023년 7월 21일

프로그래밍 문제 풀이에 대한 자세한 과정과 풀이를 공유해주셔서 감사합니다. 딕셔너리를 활용한 효율적인 코드가 인상적이었습니다. 다양한 풀이법 중에서도 본인만의 풀이법을 찾아내고 공유해주신 점이 좋았습니다. 앞으로도 좋은 글 부탁드립니다. 잘 읽었습니다!

답글 달기