링크텍스트
max인 사람을 return += 1 해야함
def solution(answers):
count1 = 0; count2 = 0; count3 = 0
list1 = [1, 2, ,3 4, 5] *2000
list2 = [2, 1, 2, 3, 2, 4, 2, 5] *1250
list3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] *1000
for v1, v2, v3, ans in zip(list1, list2, list3, answers)
if v1 == ans : count1+=1
if v2 == ans : count2+=1
if v3 == ans : count3+=1
tmp = [count1, count2, count3]
max_tmp = max(tmp)
for i, v in enumerate(temp):
if v == max_tmp : answer.append(i+1)
return answer
def souliton(answer):
answer = []
supo = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
right = [0, 0, 0]
for i in range(len(supo)):
for j in range(len(answers)):
n = len(supo[i])
if answers[j] == supo[i][j%n]
right[i] += 1
for idx, score in enumerate(right):
if score == max(right):
answer.append(idx+1)
return answer
def solution(answers):
answer = []
grade = [0]*3
first = [1,2,3,4,5] #5개<-%5
second = [2, 1, 2, 3, 2, 4, 2, 5] #8개<-%8
third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] #10개<-%10
for idx in range(0, len(answers)):
if answers[idx] == first[idx%5]:
grade[0] += 1
if answers[idx] == second[idx%8]:
grade[1] += 1
if answers[idx] == third[idx%10]:
grade[2] += 1
max_grade = max(grade)
for idx in range(0, 3):
if grade[idx] == max_grade:
answer.append(idx+1)
return answer
*활용할 것
enumerate() 함수
그럼 어떻게 해야 좀 더 파이썬답게 인덱스(index)와 원소를 동시에 접근하면서 루프를 돌릴 수가 있을까요? 🐍
바로 파이썬의 내장 함수인 enumerate()를 이용하면 되는데요. for 문의 in 뒷 부분을 enumerate() 함수로 한 번 감싸주기만 하면 됩니다.
>>> for entry in enumerate(['A', 'B', 'C']):
... print(entry)
...
(0, 'A')
(1, 'B')
(2, 'C')
zip()
zip() 함수는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 터플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환합니다. 설명이 좀 어렵게 들릴 수도 있는데요. 간단한 예제를 보면 이해가 쉬우실 겁니다.
>>> numbers = [1, 2, 3]
>>> letters = ["A", "B", "C"]
>>> for pair in zip(numbers, letters):
... print(pair)
...
(1, 'A')
(2, 'B')
(3, 'C')