반응형
https://school.programmers.co.kr/learn/courses/30/lessons/118666
2022 KAKAO TECH INTERNSHIP
내 답안
def solution(survey, choices):
score = {1:3, 2:2, 3:1, 4:0, 5:1, 6:2, 7:3}
mid = 4
list1 = ['R','T','C','F','J','M','A','N']
list2 = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]
answer = ''
for i in range(len(choices)):
if mid < choices[i]:
list2[list1.index(survey[i][1])] += score[choices[i]]
elif mid > choices[i]:
list2[list1.index(survey[i][0])] += score[choices[i]]
else:
continue
for i in range(0, 8, 2):
if list2[i] < list2[i+1]:
answer += list1[i+1]
else:
answer += list1[i]
return answer
Review
문제가 길어서 읽는데 시간이 좀 걸렸고, 이해하고 나니 머릿속에서 어떻게 할지 대충 감은 왔었다.
'AN' 과 같은 문항에서 가운데 기준으로 오른쪽 문항을 선택하는지, 왼쪽 문항을 선택하는지, 또는 모르겠음 0점을 선택하는지
정도만 구현해 내면 쉽게 풀 수 있다고 생각했고
for i in range(len(choices)):
if mid < choices[i]:
list2[list1.index(survey[i][1])] += score[choices[i]]
elif mid > choices[i]:
list2[list1.index(survey[i][0])] += score[choices[i]]
else:
continue
간단히 구현하면 이렇게 된다.
score = { 매우 비동의(1) : 어피치형 3점, 비동의(2) : 어피치형 2점 ..... 매우 동의(7) : 네오형 3점 }
점수는 딕셔너리로 구현하였고
score = {1:3, 2:2, 3:1, 4:0, 5:1, 6:2, 7:3}
해당하는 성격유형을 판단하기 위해서 리스트 2개를 활용하여
라이언 형 : 몇점, 튜브형 : 몇점 ... 을 아래와 같이 표현하였다.
list1 = ['R','T','C','F','J','M','A','N']
list2 = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]
문제를 풀고 나서 리뷰를 했는데 사실 이 부분도 딕셔너리로 구현했으면 더 깔끔했을 것 같다고 생각했다.
그리고 마지막으로
'RT', 'CF', 'JM', 'AN'
어떤게 더 높은 점수인지, 혹은 같은지 조건문으로 판단하여 최종 지표를 리턴해주었다.
for i in range(0, 8, 2):
if list2[i] < list2[i+1]:
answer += list1[i+1]
else:
answer += list1[i]
return answer
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 테이블 해시 함수 파이썬 (2) | 2022.12.27 |
---|---|
[프로그래머스] 올바른 괄호 파이썬 (0) | 2022.09.12 |
[프로그래머스] 숫자 문자열과 영단어 파이썬 (0) | 2022.03.24 |
[프로그래머스] 소수 만들기 파이썬 (0) | 2022.02.21 |
[프로그래머스] 약수의 개수와 덧셈 파이썬 (0) | 2022.02.17 |