[Programmers / Python / 완전탐색] - 모의고사

Young·2021년 5월 13일

출처
https://programmers.co.kr/learn/courses/30/lessons/42840

def solution(answers):
    answer = []
    cnt = [0, 0, 0]
    list1 = [1, 2, 3, 4, 5] #5씩 반복 
    list2 = [2, 1, 2, 3, 2, 4, 2, 5] # 8씩 반복 
    list3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] #10씩 반복
    
    for i in range(len(answers)):
        if answers[i] == list1[i%5]:
            cnt[0] += 1
        if answers[i] == list2[i%8]:
            cnt[1] += 1
        if answers[i] == list3[i%10]:
            cnt[2] += 1
        
    for i in range(len(cnt)):
        if max(cnt) == cnt[i]:
            answer.append(i+1)
            
    return answer

다른 사람의 풀이

def solution(answers):
    pattern1 = [1,2,3,4,5]
    pattern2 = [2,1,2,3,2,4,2,5]
    pattern3 = [3,3,1,1,2,2,4,4,5,5]
    score = [0, 0, 0]
    result = []

    for idx, answer in enumerate(answers):
        if answer == pattern1[idx%len(pattern1)]:
            score[0] += 1
        if answer == pattern2[idx%len(pattern2)]:
            score[1] += 1
        if answer == pattern3[idx%len(pattern3)]:
            score[2] += 1

    for idx, s in enumerate(score):
        if s == max(score):
            result.append(idx+1)

    return result

enumerate를 이용하는 방법도 있었다.

정리

enumerate(iterable)

data = enumerate({1, 2, 3})
for i, value in data:
    print(i, ":", value)

profile
👩🏻‍💻

0개의 댓글