Hey Tech

완전 탐색 알고리즘 #프로그래머스 #모의고사 | 파이썬 구현 본문

알고리즘/문제풀이

완전 탐색 알고리즘 #프로그래머스 #모의고사 | 파이썬 구현

Tony Park (토니) 2021. 8. 27. 01:35
728x90
반응형

📚 문제

문제 원본: https://programmers.co.kr/learn/courses/30/lessons/42840?language=python3 

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

🤔 접근법

⚙️ 핵심 자료구조: 완전 탐색

 

문제해결 전략의 핵심은 수포자별 '찍기 패턴'을 고려해 문제별 찍은 번호를 유추해 내는 것입니다.

본 문제에서 1번 수포자는 5개씩 한 패턴으로 정답을 찍고, 2번 수포자는 8개씩, 3번 수포자는 10개씩 찍는다는 것을 알 수 있습니다.

따라서 수포자별 정답 찍는 패턴을 리스트를 활용해 정의할 수 있습니다.

정답을 확인할 문제 번호만큼을 '찍기 패턴'을 구성하는 숫자 개수로 나누어 줍시다.

이렇게 얻은 나머지로 수포자별 '찍기 패턴' 리스트를 인덱싱하면 해당 수포자가 찍은 정답을 알 수 있습니다.

문제에서 정답을 많이 맞춘 수포자 번호를 출력해야 하며 공동 1위가 있다면 모두 출력해야 하기 때문에,

최다 정답 개수만큼을 맞춘 모든 수포자 번호를 정답으로 출력해 줍니다.

💻  My solution

def solution(answers):
    answer = []
    ans_1 = [1, 2, 3, 4, 5]
    ans_2 = [2, 1, 2, 3, 2, 4, 2, 5]
    ans_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    score = [0, 0, 0]
    
    for i in range(len(answers)):
        if answers[i] == ans_1[i%5]:
            score[0] +=1
        if answers[i] == ans_2[i%8]:
            score[1] +=1
        if answers[i] == ans_3[i%10]:
            score[2] +=1
            
    for i in range(3):
        if score[i] == max(score):
            answer.append(i+1)
    return answer

아낌없는 피드백 & 질문 환영합니다 :)

아래에 👇👇👇 댓글 남겨주세요!

그럼 오늘도 즐거운 하루 보내시길 바랍니다.

고맙습니다.

728x90
반응형