알고리즘

[프로그래머스, 파이썬] 모의고사

hminor 2024. 2. 23. 11:34

풀이

  • 1,2,3번의 반복 구간을 확인 후, li에 각 반복되는 구간을 넣어줘서
  • 이후 1,2,3번의 반복 구간의 길이보다 answers 길이가 더 길 경우를 위해
  • j%len(li[i]) 로 반복할 수 있도록 하여 문제 해결
  • 문제 제출 후 cycle이라는 메서드를 알게 되었는데
  • from itertools import cycle로 배열을 인자로 넣어주고
  • next() 메서드로 배열을 넣어주게 되면 
  • 계속해서 값을 조회하게 되어 해당 방법으로 문제를 푸는 사람도 확인 되었음.

 

def solution(answers):
    result = []
    li = [[1,2,3,4,5],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]]
    mx = 0
    for i in range(len(li)):
        check = 0
        for j in range(len(answers)):
            if li[i][j%len(li[i])] == answers[j]: check += 1
        if check > mx:
            result = [i+1]
            mx = check
        elif check == mx: result.append(i+1)

    return result