알고리즘

성격유형검사하기-2022kakao 코테

2료일 2023. 6. 10. 02:34

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

 

프로그래머스

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

programmers.co.kr

문제 이해

MBTI와 같이 각각의 항목들을 검사하면서 어디쪽에 더 가깝니? 하는 문제로서 이해에 어려움은 없었다.

예를들어 survey에 ["AN", "CF", "MJ", "RT", "NA"]이 들어오고 choices에 [5,3,2,7,5]가 들어온다면

순차적으로 5는 약한동의이므로 뒤에 있는것에 +1을 해주고 3은 약한비동의이므로 앞에거에 +1해주고 2는 비동의라 앞에꺼에 +2해주고 T는 매우동의라 뒤에꺼에 +3해주고 마지막으로 다시 5도 약한동의라 뒤에꺼에 +1을 해주게 된다.

그리고 나서 1번지표부터 비교를 해주면서 만약 같다면 사전순으로 빠른걸해주고 다르다면 큰것을 각지표별로 나타내주면 된다.

먼저 point라는 배열을 만들어서 choices가 1이면 3점, 2이면2점...7이면3점이기에 맨앞인덱스는 아무 숫자나 넣어놓고 그 뒤부터 해당 점수를 적어두었다.

4를 기준으로 4보다 크다면 뒤에꺼에 더해주기에 if문을 통해 뒤에꺼에 point를 더해주었다.

마지막으로 각지표별로 비교하면서 answer string에 더해주었다.

def solution(survey, choices):
    answer = ""
    personaldict = {
        "R" : 0,
        "T" : 0,
        "C" : 0,
        "F" : 0,
        "J" : 0,
        "M" : 0,
        "A" : 0,
        "N" : 0
    }
    point = [-100,3,2,1,0,1,2,3]
    for i in range(len(survey)):
        if(choices[i]>4):
            personaldict[survey[i][1]] += point[choices[i]]
        else:
            personaldict[survey[i][0]] += point[choices[i]]
    answer += "R" if personaldict["R"]>=personaldict["T"] else "T"
    answer += "C" if personaldict["C"]>=personaldict["F"] else "F"
    answer += "J" if personaldict["J"]>=personaldict["M"] else "M"
    answer += "A" if personaldict["A"]>=personaldict["N"] else "N"
    return answer