프로그래머스 - 모의고사

박상진·2022년 1월 17일
0

프로그래머스

목록 보기
44/65

자세한 설명은 링크 참고

제일 많이 맞춘 학생의 번호를 리턴하는 문제이다.

수포자들의 패턴을 10000개 이상으로 연속해서 나열하고 각각의 인덱스 값을 비교해보았다.

def solution(answers):
    answer = []
    n1 = 0
    n2 = 0
    n3 = 0
    no_1 = [1,2,3,4,5] * 2000
    no_2 = [2,1,2,3,2,4,2,5] * 2000
    no_3 = [3,3,1,1,2,2,4,4,5,5] * 2000
    for i in range(len(answers)) :
        if answers[i] == no_1[i] :
            n1 += 1
        if answers[i] == no_2[i] :
            n2 += 1
        if answers[i] == no_3[i] :
            n3 += 1

    if n1 == n2 :
        if n1 == n3 :
            answer.append(1)
            answer.append(2)
            answer.append(3)
        elif n1 > n3 :
            answer.append(1)
            answer.append(2)
        elif n1 < n3 :
            answer.append(3)
    elif n1 > n2 :
        if n1 == n3 :
            answer.append(1)
            answer.append(3)
        elif n1 > n3 :
            answer.append(1)
        elif n1 < n3 :
            answer.append(3)
    elif n2 > n1 :
        if n2 == n3 :
            answer.append(2)
            answer.append(3)
        elif n2 > n3 :
            answer.append(2)
        elif n2 < n3 :
            answer.append(3)
    return answer

처음엔 10000개까지 딱 개수를 맞춰서 나열하는 방법을 고민했었다. 하지만 그냥 10000개 이상이면 괜찮을거 같아서 최소값을 기준으로 10000개이상은 2000을 곱해주면 되어서 대충 곱해주었다.
처음에는 for문내부를 ifelif로 구분했었는데, if에서 통과되면 elif는 지나치게 되어서 한참을 헤메다가 전부 if로 구분해주었다.
아래 if문은 정답을 위해 써 주었다. 더 깔끔한 버전을 생각해보아야겠다.
결과는

profile
개발자가 되고싶당

0개의 댓글