모의고사(programmers 문제) python 풀이

Jipoleon·2021년 5월 26일
0

programmers

목록 보기
1/9
post-thumbnail

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42840

정답이 들어있는 배열 answers이 들어올 때, 가장 많이 맞춘 수포자를 리턴하는 문제이다.
1번 수포자는 [1, 2, 3, 4, 5] 순서로 찍고, 2번은 [2, 1, 2, 3, 2, 4, 2, 5], 3번은 [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] 순서로 찍는다.

내 풀이

def solution(answers):
    one = [1, 2, 3, 4, 5]
    two = [2, 1, 2, 3, 2, 4, 2, 5]
    three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    supos = [0, 0, 0]
    for idx, answer in enumerate(answers):
        if answer == one[idx % 5]:
            supos[0] += 1
        if answer == two[idx % 8]:
            supos[1] += 1
        if answer == three[idx % 10]:
            supos[2] += 1
    
    max_score = max(supos)
    answer = []
    for idx, score in enumerate(supos):
        if score == max_score:
            answer.append(idx+1)
        
    return answer

따라서 난 각 수포자가 찍는 패턴을 각각의 배열(one, two, three)안에 넣어줬고, n번째 수포자가 맞을 때마다 n번째 수포자의 점수에 1점을 추가해주기 위해 supos라는 배열을 만들어줬다.
그리고 완전탐색 문제답게 for문을 돌려 각각 몇 문제를 맞췄는지 확인하고, 아래 코드로 가장 많이 맞춘 사람을 return해준다.

결과

profile
I Love AI

0개의 댓글