Algorithm/Programmers

[Python] 모의고사

느낌표 공장장 2021. 4. 6. 02:14
def solution(answers):
    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]
    count_1 = 0
    count_2 = 0
    count_3 = 0
    
    for i in range(len(answers)) :
        if a[i%len(a)] == answers[i] :
            count_1 += 1
        if b[i%len(b)] == answers[i] :
            count_2 += 1
        if c[i%len(c)] == answers[i] :
            count_3 += 1

    score_list = [count_1, count_2, count_3]

    answer = []
    for x, y in enumerate(score_list):
        if y == max(score_list) :
            answer.append(x+1)

    return answer

풀이

    for i in range(len(answers)) :
        if a[i%len(a)] == answers[i] :
            count_1 += 1
        if b[i%len(b)] == answers[i] :
            count_2 += 1
        if c[i%len(c)] == answers[i] :
            count_3 += 1

    score_list = [count_1, count_2, count_3]

answers의 길이만큼 반복문을 만들어

1번 학생(a), 2번 학생(b), 3번 학생(c)의 답과 맞추어 보아, 답과 맞는다면 1점씩 추가하는 방식이다.

!!! 중요 !!! 학생들의 답은 반복이니 나머지 연산을 사용하여 준다. a[i%len(a)]  

쓰기 전에는 런타임 에러가 났다.

 

    answer = []
    for x, y in enumerate(score_list):
        if y == max(score_list) :
            answer.append(x+1)

    return answer

enumerate 함수 (리스트의 인덱스의 정보도 반환하는 반복문. 예) (인덱스, 리스트값) ) 

를 사용하여 각 학생의 값(y)이 최댓값과 같다면 학생의 번호(x+1)를 answer 리스트에 넣어준다.