Algorithm

[프로그래머스/level1/python] 수포자

Choi G.H 2022. 4. 17. 12:34
반응형
from collections import deque

def solution(answers):
    answer = []
    
    a = deque([1,2,3,4,5])
    b = deque([2,1,2,3,2,4,2,5])
    c = deque([3,3,1,1,2,2,4,4,5,5])
    
    scores = [0,0,0]
    
    for i in range(len(answers)):
        if(answers[i] == a[0]):
            scores[0] +=1
        if(answers[i] == b[0]):
            scores[1] +=1
        if(answers[i] == c[0]):
            scores[2] +=1
        
        a.rotate(-1)
        b.rotate(-1)
        c.rotate(-1)
    
    max_ = max(scores)
    if(scores[0] == max_):
        answer.append(1)
    if(scores[1] == max_):
        answer.append(2)
    if(scores[2] == max_):
        answer.append(3)
    
    
    return answer

 

모든 참가자들의 답안은 같은 패턴이 반복되기 때문에

 

데크(deque)의 rotate() 를 사용해서 문제를 풀어보았다.

 

각 참가자 별로 답안의 한 사이클을 데크에 저장해둔 다음

 

answers의 길이만큼 답안을 대조하고 rotate 한다.

 

그런 다음 최대값을 가진 참가자 번호를 answer에 append 한다.

반응형