[프로그래머스] 모의고사 문제풀이 python

mauz·2022년 5월 27일
0

🐒 문제

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

✍ 나의 풀이

def solution(answers):
    answer = []
    a = [1, 2, 3, 4, 5]
    b = [2, 1, 2, 3, 2, 4, 2, 5]
    c = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    hit = [0,0,0] # 각 학생이 정답을 맞춘 횟수 저장
    
    for i in range(len(answers)):
        if answers[i] == a[i%5]:
            hit[0] += 1
        if answers[i] == b[i%8]:
            hit[1] += 1
        if answers[i] == c[i%10]:
            hit[2] += 1
    
    hitmax = max(hit)
    for i in range(3):
        if hit[i] == hitmax:
            answer.append(i+1)
    
    return answer

완전탐색 카테고리의 문제이다.


🧠 문제 이해

학생 세명은 규칙적으로 답을 찍는다.

계속 증가하는 인덱스를 규칙에 맞춰주기위해 나머지연산을 이용한다.


🔍 다른 풀이

def solution(answers):
    pattern1 = [1,2,3,4,5]
    pattern2 = [2,1,2,3,2,4,2,5]
    pattern3 = [3,3,1,1,2,2,4,4,5,5]
    score = [0, 0, 0]
    result = []

    for idx, answer in enumerate(answers):
        if answer == pattern1[idx%len(pattern1)]:
            score[0] += 1
        if answer == pattern2[idx%len(pattern2)]:
            score[1] += 1
        if answer == pattern3[idx%len(pattern3)]:
            score[2] += 1

    for idx, s in enumerate(score):
        if s == max(score):
            result.append(idx+1)

    return result

위 코드는 문제에서 가장 많은 좋아요를 받은 풀이이다.

나의 풀이와 동일한 아이디어를 공유한다.

코드에서 다른점은 enumerate()함수를 이용해 인덱스와 요소를 받아왔다는 점이다.

profile
쥐구멍에 볕드는 날

0개의 댓글