Completion over Perfection

프로그래머스 - 성격 유형 검사하기 (파이썬3 Python3) 본문

파이썬 (Python)

프로그래머스 - 성격 유형 검사하기 (파이썬3 Python3)

난차차 2023. 9. 3. 11:11
반응형

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

 

프로그래머스

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

programmers.co.kr

 

MBTI 검사지처럼 질문에 따라 동의 미동의에 가산점을 메기고 

가장 높은 점수가 나오는 성격유형을 출력해주는 문제입니다. 

 

제가 코드 짜면서 고생했던 부분은

마지막에 4개의 지표에서 2개 중 하나의 유형만 뽑아서 4개의 글자를 만들어줘야 하는데요, 

같은 지표에서 가장 높은점수가 2개 이상 나왔을 경우에는

제일 큰 점수를 받은 글자만 채택하고 나머지 숫자는 점수가 높더라도 제외해야한다는 점이었습니다.

 

두번째 예시를 보면 

survey 값으로 ["TR", "RT", "TR"] 이 들어오고 choices 값으로 [7, 1, 3]이 들어오게 되는데

T와 R은 1번 지표에 같이 있는 글자들이라서 두 글자중 한글자는 버려야된다는 점이죠. 

이 부분만 주의해서 풀어주시면 됩니다. 

 

 

def solution(survey, choices):
    answer = ''
    scoreBoard = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0}
    sortType = [['R','T'],['C','F'],['J','M'],['A','N']]

    for i in range(len(survey)):
        survey[i] = list(survey[i])
        disagree = survey[i][0]
        agree = survey[i][1]
        choice = choices[i]
        
        if choice < 4 :
            scoreBoard[disagree] +=  4 - choice
        elif choice > 4:
            scoreBoard[agree] += choice - 4

    for i in range(4): # 지표는 4개이므로 4번을 돌면서 한글자씩 채워줄 것
        idx = sortType[i] # [R, T]
        if scoreBoard[idx[0]] >= scoreBoard[idx[1]]:
            answer += idx[0]
        else:
            answer += idx[1]

    return answer

 

 

반응형
Comments