알고리즘

[프로그래머스 lv 1] 모의고사.py

파뱁 2022. 2. 8. 22:47
728x90

<문제 설명>

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

 

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

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

programmers.co.kr

3명의 수포자가 나온다. 각 수포자들은 본인만의 찍는 방식이 있는데 이를 가지고 주어진 답과 비교하여 제일 문제를 많이 맞춘 사람(들)을 리턴하면 된다.

 

입출력의 예는 다음과 같다.

answers return
[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]

 

<문제 해결 아이디어>

완전 탐색 문제인 만큼 주어진 답을 전부 순회하면서 수포자의 찍는 방식과 비교하여 각 수포자 별로 몇 문제를 맞췄는지를 확인해보면 된다.

 

<문제 풀이 코드>

def solution(answers):
    answer = []
    a1 = [1,2,3,4,5]
    a2 = [2, 1, 2, 3, 2, 4, 2, 5]
    a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    cnt1,cnt2,cnt3 = 0,0,0
    for i in range(len(answers)):
        ia1 = i%5
        ia2 = i%8
        ia3 = i%10
        if a1[ia1] == answers[i]:
            cnt1 += 1
        if a2[ia2] == answers[i]:
            cnt2 += 1
        if a3[ia3] == answers[i]:
            cnt3 += 1
    maxCnt = max(cnt1,cnt2,cnt3)
    if maxCnt == cnt1:
        answer.append(1)
    if maxCnt == cnt2:
        answer.append(2)
    if maxCnt == cnt3:
        answer.append(3)
    return answer

채점 결과

728x90
반응형