프로그래머스 - 성격 유형 검사하기 / 문제 유형 : 구현 / 2022 KAKAO TECH INTERNSHIP / Level 1
2022 KAKAO TECH INTERNSHIP에서 나온 문제이다.
문제 바로가기 - https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
Solution
우선 survey에 있는 결과를 문자를 하나씩 분류하여 점수를 계산해준다. (ex. "A" : 2)
점수를 계산할 때, 1~3이면 앞에 있는 문자에 점수를 더하고 5~7이면 뒤에 있는 문자에 점수를 더해주는데,
1 -3점, 2-2점, 3-1점으로 계산해주기 위해서 4에서 choices를 빼주었다.
마찬가지로 5-1점, 6-2점, 7-3점이므로 choices에서 4를 빼주었다.
문자별 점수를 다 계산한 후 미리 저장해 둔 mbti지표를 순회한다.
점수가 같은 경우 알파벳 순서로 결정하므로 알파벳이 빠른 순서대로 mbti지표에 저장하였다.
이제 알파벳의 점수를 저장한 dictionary에서 각 지표의 점수를 비교하여, 뒤 알파벳의 점수가 더 높으면 뒤 알파벳을 추가하고
아닌 경우 앞 알파벳을 추가한다.
점수가 같을때도 앞 알파벳을 출력하므로 뒤 알파벳은 점수가 높을 때만 추가해주면 된다.
from collections import defaultdict
def solution(survey, choices):
answer = ''
mbti = [["R","T"],["C","F"],["J","M"],["A","N"]]
result = defaultdict(int)
for i in range(len(survey)):
survey_item = list(survey[i])
data = choices[i]
if data <= 4:
result[survey_item[0]] += 4-data
else:
result[survey_item[1]] += data-4
for i in range(4):
c1,c2 = mbti[i][0],mbti[i][1]
if result[c1] < result[c2]:
answer += c2
else : answer += c1
return answer
생각보다 구현은 간단하였다.
'코딩테스트 문제' 카테고리의 다른 글
[코드트리] 삼성 SW 역량테스트 2022 상반기 오전 2번 문제 - 예술성 (0) | 2023.04.06 |
---|---|
[Python] 프로그래머스 - 튜플(2019 카카오 개발자 겨울 인턴십) (0) | 2022.10.05 |
[Python] 프로그래머스 - 주차요금 계산 (0) | 2022.10.03 |
[Python] 프로그래머스 - 신고 결과 받기(2022 KAKAO BLIND RECRUITMENT) (2) | 2022.09.16 |
[Python] 프로그래머스-소수만들기(Summer/Winter Coding(~2018)) (2) | 2022.09.15 |