눈송이의 개발생활

[Programmers Lv.1]모의고사 (Python) 본문

Algorithm/Programmers

[Programmers Lv.1]모의고사 (Python)

꾸지새미언니

문제

https://programmers.co.kr/learn/courses/30/lessons/42748

내 코드 

def solution(answers):
    students = [
        [1, 2, 3, 4, 5],
        [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    ]
    answer = [0, 0, 0]
    result = []

    for i in range(len(answers)):
        if answers[i] == students[0][i % 5]:
            answer[0] += 1
        if answers[i] == students[1][i % 8]:
            answer[1] += 1
        if answers[i] == students[2][i % 10]:
            answer[2] += 1

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

    return result

해결 방법

학생1의 답은 5를 주기로 반복되고, 학생2는 8, 학생3은 10을 주기로 반복된다. 

모든 답을 돌면서, 수포자들의 답이 정답과 같으면 해당 학생의 정답 수를 증가시킨다. 

answer는 각 학생들의 정답 개수를 저장한 배열이다. 

답을 다 돌고 난 뒤에, max가 1이상인 경우를 고려하여 answer배열을 돌면서 가장 큰 값을 가진 학생의 번호를 result 배열에 추가시킨다. 

완전탐색 문제라서 모든 배열을 다 돌아야 해결되는 문제였다. 

 

 

Comments