본문 바로가기
Algorithm

[프로그래머스] 완전탐색 - 모의고사(파이썬 문제풀이)

by j-y 2021. 4. 2.
반응형

문제 링크

 

단순하게 문제 조건대로 구현해서 풀었습니다.

 

repeat 이라는 2차원 배열에 문제에서 제시된 1번, 2번, 3번 학생의 반복 규칙을 넣어두고 chk 라는 함수를 만들어 각 학생별 점수를 확인하도록 했습니다. 학생별 점수를 res 배열에 넣어두고 가장 큰 점수를 구해 res에서 가장 큰 점수의 학생 번호를 answer 리스트에 추가한 뒤 리턴하도록 코드를 작성했습니다.

 

저는 chk 함수에서 idx == len(tmp) 라는 조건으로 학생의 반복 규칙을 회전하도록 구성했는데, 이 부분을 나머지 연산으로 대체한다면 각 학생별로 chk 함수를 돌릴 필요없이 for 문 한번으로 해결할 수 있겠습니다.

 

문제 풀이(파이썬)


def chk(idx, tmp, answers):
    score = 0

    for i in range(len(answers)):
        if tmp[idx] == answers[i]:
            score += 1
        idx += 1
        if idx == len(tmp):
            idx = 0
    return score

def solution(answers):
    repeat = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]

    res = list()
    for r in repeat:
        res.append(chk(0, r, answers))

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

    return answer
반응형

댓글