공돌이 공룡의 서재

[프로그래머스 Level 1] 모의고사 / 완전탐색 / 파이썬 본문

코딩/프로그래머스

[프로그래머스 Level 1] 모의고사 / 완전탐색 / 파이썬

구름위의공룡 2020. 7. 5. 20:47

<문제>

 

<풀이>

def solution(answers):
    solver = [0, 0, 0]
    s1 = [1, 2, 3, 4, 5]
    s2 = [2, 1, 2, 3, 2, 4, 2, 5]
    s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    for i in range(len(answers)):
        if answers[i] == s1[i % len(s1)]:
            solver[0] += 1
        if answers[i] == s2[i % len(s2)]:
            solver[1] += 1
        if answers[i] == s3[i % len(s3)]:
            solver[2] += 1

    answer = []
    for i in range(len(solver)):
        if solver[i] == max(solver):
            answer.append(i + 1)

    return answer

 

코드 설명:

 

유형이 완전탐색인 이유는 정답이 들은 배열 answers의 모든 값들을 탐색해야하기 때문이다. 구조적인 문제보다는 문제 조건만 잘 생각하면 풀 수 있는 문제다. 각 수포자들이 답을 찍는 번호 패턴이 담긴 배열들을 만든 다음에 이를 answers 배열과 비교하는데, 번호 패턴이 계속 반복되므로 나머지 값 % 연산으로 index값을 정했다. k번째 수포자의 답과 정답지와 같으면 solver의 k-1번째 값을 1씩 올리고 이후 가장 큰 값이 몇번째에 있는지 찾는다.

 

 

Comments