[Python] 완전탐색_모의고사 복습

EunBi Na·2022년 6월 25일
0

링크텍스트
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')
profile
This is a velog that freely records the process I learn.

0개의 댓글