rueki

프로그래머스 Lv1. 모의고사(완전탐색) 본문

프로그래머스 연습

프로그래머스 Lv1. 모의고사(완전탐색)

륵기 2022. 10. 6. 03:25
728x90
반응형

1번, 2번, 3번 학생 모두 찍는 패턴이 고유한데 찍는 패턴의 최대 길이가 다 다르다.

최대 10000문제까지 있다고 하는데 이를 전부 사용하는 것은 메모리 상 문제가 있을 것이다.

그래서 최소한의 패턴을 가지고 정답과 비교하기 위해서 정답 인덱스와 나머지연산을 통해서 반복하게 된다.

-예로 10번 문제에 대해서 비교하려 하는데 1번학생은 10 % 5 = 5, 2번학생은 10 % 8 = 2, 3번학생은 10 % 10 =0 의 패턴    순서에 있는 답과 비교를 하면 된다.

- 정답 개수 비교하여 카운트 세주기

- 최대로 맞은 사람 개수와 비교해서 같은 값을 가지는 학생의 경우 최종 출력

def solution(answers):
    fs = [1, 2, 3, 4, 5]
    ss = [2,1,2,3,2,4,2,5]
    ts = [3,3,1,1,2,2,4,4,5,5]
    
    c1, c2, c3 = 0, 0, 0
    
    for i in range(len(answers)):
        s1 = i % len(fs)
        s2 = i % len(ss)
        s3 = i % len(ts)
        
        if fs[s1] == answers[i]:
            c1 += 1
        if ss[s2] == answers[i]:
            c2 += 1
        if ts[s3] == answers[i]:
            c3 += 1
    answer = []   
    score_list =  [c1, c2, c3]
    for i in range(len(score_list)):
        if score_list[i] == max(score_list):
            answer.append(i+1)
    
    
    return answer
728x90
반응형
Comments