티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/118666
1. 접근 방식
- types와 scores 2개의 리스트를 활용하자.
1번 지표 RT, 2번 지표 CF, 3번 지표 JM, 4번 지표 AN이므로, 지표 순서를 고려하면서 각 지표의 유형은 사전 순으로 types 리스트에 담는다. 즉, types == ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']이다. scores는 types의 인덱스와 일치하는 성격 유형의 점수이다. 초기엔 모두 0점이다.
- survey가 'RT'일 때, 선택지가 4보다 작다면 R, 크다면 T
즉, 선택지가 1(매우 비동의)라면 RT 중 0번째 인덱스인 R이, 7(매우 동의)라면 1번째 인덱스인 T의 점수가 추가된다.
- 두 가지의 성격 유형을 중 어떤 유형인지 판단하기 위해 0부터 8까지 step = 2로 for문을 돌린다.
step = 2로 설정하는 이유는 위 그림처럼 RT, CF, JM, AN로 하나의 지표에 유형이 2개씩 나뉘기 때문이다.
scores[i]이 scores[i+1]보다 크거나 같다면, types[i] 유형이다. 이때 포인트는 "같다면"이라는 조건이다. 이 조건 덕분에 'A', 'N'처럼 점수가 동일하더라도, 사전 순인 A 유형이 선택된다.
2. 정답 코드
def solution(survey, choices):
table = [0, 3, 2, 1, 0, 1, 2, 3] # 0번째 원소는 자릿수 맞추기용
# compute scores
types = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
scores = [0] * 8
for i in range(len(choices)):
if choices[i] == 4: continue
t = 0 if choices[i] < 4 else 1
index = types.index(survey[i][t])
scores[index] += table[choices[i]]
# make type
answer = ''
for i in range(0, 8, 2):
answer += types[i] if scores[i] >= scores[i+1] else types[i+1]
return answer
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 튜플 파이썬 정답 코드 (0) | 2023.06.15 |
---|---|
[프로그래머스] 신고 결과 받기 파이썬 정답 코드 (0) | 2023.06.14 |
[프로그래머스] 신규 아이디 추천 파이썬 정답 코드 (0) | 2023.06.13 |
[프로그래머스] 크레인 인형뽑기 게임 파이썬 정답 코드 (0) | 2023.06.13 |
[프로그래머스] 문자열 나누기 파이썬 정답 코드 (0) | 2023.06.13 |