728x90
성격 유형 검사하기
문제 설명
입출력 예
문제 상황 발생
def solution(survey, choices):
answer = ''
arr = [0 for _ in range(8)]
for i in range(len(survey)):
if survey[i][0]=="R":
if choices[i]<4:
arr[0]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[1]+=(choices[i]-4)
elif survey[i][0]=="T":
if choices[i]<4:
arr[1]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[0]+=(choices[i]-4)
elif survey[i][0]=="C":
if choices[i]<4:
arr[2]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[3]+=(choices[i]-4)
elif survey[i][0]=="F":
if choices[i]<4:
arr[3]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[2]+=(choices(i)-4)
elif survey[i][0]=="J":
if choices[i]<4:
arr[4]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[5]+=(choices[i]-4)
elif survey[i][0]=="M":
if choices[i]<4:
arr[5]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[4]+=(choices[i]-4)
elif survey[i][0]=="A":
if choices[i]<4:
arr[6]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[7]+=(choices[i]-4)
elif survey[i][0]=="N":
if choices[i]<4:
arr[7]+=(choices[i]*(-1)+4)
elif choices[i]>4:
arr[6]+=(choices[i]-4)
if arr[0]>=arr[1]:
answer+="R"
else:
answer+="T"
if arr[2]>=arr[3]:
answer+="C"
else:
answer+="F"
if arr[4]>=arr[5]:
answer+="J"
else:
answer+="M"
if arr[6]>=arr[7]:
answer+="A"
else:
answer+="N"
return answer
-> 런타임 에러 발생 (코드 보면 그럴만도 함)
Solution
def solution(survey, choices):
answer = ''
dic= {"R" : 0, "T" : 0, "C" : 0, "F" : 0, "J" : 0, "M" : 0, "A" : 0, "N" : 0 }
for s, c in zip(survey, choices): # s:R, T, C, ... / c:1, 2, 3, 4, ...
if c>4: #동의 항목
dic[s[1]] += c-4 # RT 중 T에 1(5-4), 2(6-4), 3(7-4) 점수 추가
elif c<4: #비동의 항목
dic[s[0]] += 4-c # RT 중 R에 1(4-3), 2(4-2), 3(4-1) 점수 추가
arr = list(dic.items()) # ["R", 0, "T", 0, "C", 0, ...]
for i in range(0, 8, 2): # RT, CF, JM, AN 점수 비교
if arr[i][1] < arr[i+1][1]:
answer += arr[i+1][0]
else:
answer += arr[i][0]
return answer
*zip() 내장함수
>>> numbers = [1, 2, 3]
>>> letters = ["A", "B", "C"]
>>> for pair in zip(numbers, letters):
... print(pair)
...
(1, 'A')
(2, 'B')
(3, 'C')
dictionary를 이용하여 깔끔하게 문제를 풀 수 있었음...
Result
728x90
'Python > 코딩테스트' 카테고리의 다른 글
[프로그래머스/python] 코딩테스트 연습 Lv.1 (6월 다섯 번째 주 1) (0) | 2023.06.25 |
---|---|
[프로그래머스/python] 코딩테스트 연습 Lv.1 (6월 네 번째 주 2) (0) | 2023.06.24 |
[프로그래머스/python] 코딩테스트 연습 Lv.1 (6월 세 번째 주 2) (0) | 2023.06.17 |
[프로그래머스/python] 코딩테스트 연습 Lv.1 (6월 세 번째 주) (0) | 2023.06.13 |
[프로그래머스/python] 코딩테스트 연습 Lv.1 (6월 두 번째 주) (0) | 2023.06.10 |