본문 바로가기
코딩공부/프로그래머스 (python)

[프로그래머스] 모의고사 (python)

by CodingKwon 2021. 7. 27.

문제 링크 (Level 1)

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

 

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

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

programmers.co.kr

 

나의 코드 (python)

def solution(answers):
    answer = []

    # 수포자의 정답 패턴
    p1 = [1, 2, 3, 4, 5]
    p2 = [2, 1, 2, 3, 2, 4, 2, 5]
    p3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    # 맞춘 문제 카운팅 할 변수
    cnt1 = 0
    cnt2 = 0
    cnt3 = 0

    # 정답과 찍는게 같으면 카운팅
    for i in range(len(answers)):
        # 정답 패턴이 반복하는 크기
        a = i % 5
        b = i % 8
        c = i % 10
        # 정답 확인
        if p1[a] == answers[i]:
            cnt1 += 1
        if p2[b] == answers[i]:
            cnt2 += 1
        if p3[c] == answers[i]:
            cnt3 += 1

    # 정답의 개수가 가장 큰 수포자를 answer에 입력
    if cnt1 == max(cnt1, cnt2, cnt3):
        answer.append(1)
    if cnt2 == max(cnt1, cnt2, cnt3):
        answer.append(2)
    if cnt3 == max(cnt1, cnt2, cnt3):
        answer.append(3)

    return answer

 

이 문제는 수포자들의 정답 패턴이 있습니다. 그 패턴의 배열을 만들어두고 문제의 정답을 받으면서 패턴과 비교하는 로직을 만들어야 합니다.

 

마지막으로 정답의 개수가 가장 큰 수포자를 찾아서 answer에 정답자를 넣습니다.

댓글