반응형
https://programmers.co.kr/learn/courses/30/lessons/42840?language=python3
def solution(answers):
person1 = [1,2,3,4,5]
person2 = [2,1,2,3,2,4,2,5]
person3 = [3,3,1,1,2,2,4,4,5,5]
score = [0,0,0]
answer = []
# 맞은 개수 계산
for i in range(len(answers)):
if answers[i] == person1[i % len(person1)]: score[0] += 1
if answers[i] == person2[i % len(person2)]: score[1] += 1
if answers[i] == person3[i % len(person3)]: score[2] += 1
maxScore = max(score) # 가장 많이 맞은 개수
# 가장 많이 맞은 사람 계산
for i in range(len(score)):
if score[i] == maxScore: answer.append(i+1)
return answer
이 문제는 완전탐색 문제이기 때문에 모든 배열을 돌면서 몇 개를 맞았는지 계산해야하는 문제였습니다.
맞은 개수를 계산하기 위해 정답(answer)과 세 사람의 답을 비교해서 같으면 점수에 +1를 해주었습니다. 세 사람의 답이 일정한 패턴을 반복하기 때문에 답과 맞는지 계산하려면 i % len(person1) 하는 것이 중요했습니다. 맞은 개수 계산이 다 끝나면 max()를 사용하여 가장 많이 맞은 개수를 계산합니다. 그 다음 다시 for문을 돌면서 가장 많이 맞은 사람을 계산합니다. 이 때 사람은 1부터 시작하므로 i+1를 해줘야 답이 정상적으로 출력됩니다.
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Python] 카펫 - Level2 (0) | 2021.05.18 |
---|---|
[프로그래머스/Python] 소수 찾기 - Level2 (0) | 2021.05.17 |
[프로그래머스/Python] 문자열 압축 (0) | 2021.05.14 |
[프로그래머스/Python] H-Index - Level2 (0) | 2021.05.12 |
[프로그래머스/Python] 가장 큰 수 - Level2 (0) | 2021.05.09 |