[pro] 모의고사

letsbebrave·2022년 5월 20일
0

codingtest

목록 보기
130/146

문제

https://programmers.co.kr/learn/courses/30/lessons/42840?language=python3

풀이

25분 소요

def solution(answers):
    n = len(answers)
    one = []
    two = []
    three = []
    num1 = [1, 2, 3, 4, 5]
    num2 = [2, 1, 2, 3, 2, 4, 2, 5]
    num3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    for i in range(n):
        one.append(num1[i % 5]) 
        two.append(num2[i % 8])
        three.append(num3[i % 10])
    ans = [0, 0, 0]
    for i in range(n):
        if answers[i] == one[i]:
            ans[0] += 1
        if answers[i] == two[i]:
            ans[1] += 1
        if answers[i] == three[i]:
            ans[2] += 1
    big = max(ans)
    answer = []
    for i in range(3):
        if big == ans[i]:
            answer.append(i+1)
    return answer

다른 사람 풀이

def solution(answers):
    pattern1 = [1,2,3,4,5]
    pattern2 = [2,1,2,3,2,4,2,5]
    pattern3 = [3,3,1,1,2,2,4,4,5,5]
    score = [0, 0, 0]
    result = []

    for idx, answer in enumerate(answers):
        if answer == pattern1[idx%len(pattern1)]:
            score[0] += 1
        if answer == pattern2[idx%len(pattern2)]:
            score[1] += 1
        if answer == pattern3[idx%len(pattern3)]:
            score[2] += 1

    for idx, s in enumerate(score):
        if s == max(score):
            result.append(idx+1)

    return result

ind, ans in enumerate(list)

반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있다. 이때, 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환한다.

profile
그게, 할 수 있다고 믿어야 해

1개의 댓글

👍

답글 달기