LEVEL1/모의고사

Q·2021년 7월 26일
0

문제 설명


전체 코드

def solution(answer):
    arr1 = [1,2,3,4,5]
    arr2 = [2,1,2,3,2,4,2,5]
    arr3 = [3,3,1,1,2,2,4,4,5,5]

    result1 = 0
    result2 = 0
    result3 = 0
    for i in range(len(answer)):
        if answer[i] == arr1[i % len(arr1)]:
            result1 += 1
        if answer[i] == arr2[i % len(arr2)]:
            result2 += 1
        if answer[i] == arr3[i % len(arr3)]:
            result3 += 1

    arr = [result1, result2, result3]

    result = []
    
    for i, v in enumerate(arr):
        if v == max(arr):
            result.append(i+1)

    return result

해결 방법

이 문제는 특별한 해결 방법이 필요하기보단 개발자로서의 센스가 있어야 한다. 먼저 수포자 1,2,3의 변수를 리스트로 선언해주고 각각 값을 arr1, arr2, arr3에 넣어준다. 그 후 각각의 정답을 맞춘 횟수를 result1, resutlt2, result3로 초기화 해주고 answer의 길이만큼 반복문을 돌려준뒤에 arr1,arr2,arr3의 값과 정답을 맞추어 본다. 이때 arr의 인덱스들은 %len(arr)들을 해주면 만약 [1,2,3,4,5]의 값을 갖고 있는 arr1은 i가 5일때 arr1[5 % len(arr1)] == arr1[0] 과 같이 되므로 %len(arr1)에 의해 다시 인덱스가 처음부터 돌게 된다. 이런 메커니즘으로 result1,2,3을 구했으면 arr이란 리스트에 넣어주고 이 리스트의 max값과 같은 값을 갖는 arr의 인덱스를 result에 넣어주고 반환시킨다.

profile
Data Engineer

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN