728x90
▶성격 유형 검사하기 - 2022 카카오 테크 인턴십 (level 1)
▶문제 ▶출력
https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=python3
보통은 문제를 적는데, 너무 길어서 링크로 대체하도록 하겠습니다.
▶제한사항
- 1 ≤ survey의 길이 ( = n) ≤ 1,000
- survey의 원소는 "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" 중 하나입니다.
- survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
- survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
-
- choices[i]는 검사자가 선택한 i+1번째 질문의 선택지를 의미합니다.
- 1 ≤ choices의 원소 ≤ 7 choices의 길이 = survey의 길이
▶풀이
성격의 모든 유형에 대해서 확인을 해주어야 한다.
그래서 for을 돌릴 때 l, r을 확인을 하고, 1~3일 땐 l에, 5~7일 땐 r에 더해주도록 구현하였다.
더해주기 위해서는 그 값을 저장하는 변수가 필요한데 하나하나 하면 길어지기 때문에
dictionary를 이용해서 해주었다.
그리고 마지막에 RT, CF, JM, AN 각각 비교해서 큰 값을 가지는 성격 유형을
answer에 저장해서 return 해주었다.
def solution(survey, choices):
answer = ''
check = {"R":0, "T":0, "C":0, "F":0, "J":0, "M":0, "A":0, "N":0, }
for i in range(len(choices)):
l = survey[i][0]
r = survey[i][1]
if choices[i] == 4:
continue
elif choices[i] < 4:
check[l] += (4 - choices[i])
else:
check[r] += (choices[i] - 4)
answer += "R" if check["R"] >= check["T"] else "T"
answer += "C" if check["C"] >= check["F"] else "F"
answer += "J" if check["J"] >= check["M"] else "M"
answer += "A" if check["A"] >= check["N"] else "N"
return answer
이번 문제는 따로 효율성 테스트가 없는 문제였다.
level 1이어서 그런지 정확성만 통과하면 정답으로 나오는 문제다.
코드도 길지 않고, 쉽고 간단하게 구현할 수 있는 문제였다.
728x90