import math
def solution(answers):
answer = []
# 이렇게 하고 싶지 않아서 여러 방법을 생각해봤으나.. 생각이 나지 않아서 이렇게 했다.
first = [1, 2, 3, 4, 5]
second = [2, 1, 2, 3, 2, 4, 2, 5]
third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
# answers 길이보다 길게 만들어줘야 비교가 가능하니까 그렇게 만들어줌. 위의 코드와 한번에 썼어도 괜찮았을듯.
# 이것 대신 밑의 for문에서 각각을 i % len(first) 이렇게 해주는 것이 더 좋았을듯.
first = first * math.ceil(len(answers) / len(first))
second = second * math.ceil(len(answers) / len(second))
third= third * math.ceil(len(answers) / len(third))
count = [0] * 3
# 정답 개수 올리기.
for i in range(len(answers)):
if answers[i] == first[i]:
count[0] += 1
if answers[i] == second[i]:
count[1] += 1
if answers[i] == third[i]:
count[2] += 1
# 제일 큰 점수 찾고
maxCount = max(count[0], count[1], count[2])
# 그 점수와 같으면 배열에 추가
for i in range(3):
if count[i] == maxCount:
answer.append(i+1)
return answer
아무 생각이 안나~ 하는 바람에 이렇게 풀기는 했는데.. 아마 같은 문제에서 사람 수도 입력받아서 푸는걸로 문제가 바뀌면.... 비효율적인 코드가 아닐까 싶다. 공간복잡도도 그리 좋지는 않네..