Algorithm

[Programmers] 2022 KAKAO TECH INTERNSHIP - 성격 유형 검사하기 Python 풀이

seungseop 2023. 3. 12. 17:47

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

(문제의 길이가 상당해 링크로 대체한다.)

풀이 & Comment

이 문제는 Level 1에 해당하는 문제로 난이도가 높은 문제는 아니다.

맨날 백준으로만 문제를 풀다가 프로그래머스에 적응해볼겸 기출문제도 풀어볼 겸 해봤다.

우선 문제를 보자마자 대충 구현 문제라는걸 떠올릴 수 있다. 

문제의 길이가 상당한데, 여기서 대충 어림짐작해서 문제를 대충 읽었다간 삽질을 하게 될 수도 있다.(나처럼..)

 

이 문제의 포인트는 각 질문에 해당하는 답변마다의 점수를 확실히 기록해 놓으면 간단할 것 같다.

예컨대 choice가 1일때 추가해줘야 하는 점수는 3이고, 5일 때는 1이다.

 

또한 딕셔너리의 개념을 잘 숙지하고 있다면 더욱 빠르고 간단하게 풀 수 있을 것 같다.

 

코드

def solution(survey, choices):
    score = {'R' : 0, 'T' : 0, 'C' : 0, 'F' : 0,
             'J': 0, 'M' : 0, 'A' : 0, 'N' : 0}
    answer = ''
    for i in range(len(choices)):
        if choices[i] >= 5:
            score[survey[i][1]] += choices[i]-4
        elif choices[i] <=3:
            score[survey[i][0]] += 4-choices[i]

    score_values = list(score.values())
    score_keys = list(score.keys())

    for i in range(0,7,2):
        if score_values[i] >= score_values[i+1]:
            answer += score_keys[i]
        else:
            answer += score_keys[i+1]

    return answer