알고리즘
성격유형검사하기-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