PS

[Progammers] Python 프로그래머스 모의고사(42840)

1223v 2024. 11. 16. 22:04

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

완전 탐색문제이다. 3명의 답안 패턴을 가지고, 가장 많이 맞은 사람을 찾는 로직이다.

답안의 패턴 배열을 만들고, 나머지 연산으로 값의 정답 유무를 확인하면 된다.



def solution(answers):
    result = []
    correct_length = len(answers)
    one_ans = [1,2,3,4,5]
    two_ans = [2,1,2,3,2,4,2,5]
    three_ans = [3,3,1,1,2,2,4,4,5,5]
    count = [0,0,0,0]

    for i in range(correct_length):
        
        if one_ans[i%5] == answers[i]:
            count[1] += 1
        
        if two_ans[i%8] == answers[i]:
            count[2] += 1
        
        if three_ans[i%10] == answers[i]:
            count[3] += 1

    for i in range(1,len(count)):
        if count[i] == max(count):
            result.append(i)
        
    return result

 

회고.

처음에는  사람이 3명인줄 모르고 dfs 백트래킹으로 완탐을 돌렸는데... 역시 문제를 잘 읽어야겠다.