본문 바로가기

프로그래머스 알고리즘 문제/Level 1

프로그래머스 Level 1 - 모의고사

내 정답:

 

def solution(answers):
    def one(i):
        return (i + 1) % 5 or 5
    def two(i):
        if i % 2 == 0:
            return 2
        else:
            if i % 8 == 1: return 1
            elif i % 8 == 3: return 3
            elif i % 8 == 5: return 4
            else: return 5
    def three(i):
        if i % 10 < 2: return 3
        elif i % 10 < 4: return 1
        elif i % 10 < 6: return 2
        elif i % 10 < 8: return 4
        else: return 5
    answer = []
    oneCount = 0
    twoCount = 0
    threeCount = 0
    for i in range(len(answers)):
        if answers[i] == one(i): oneCount += 1
        if answers[i] == two(i): twoCount += 1
        if answers[i] == three(i): threeCount += 1
    print(oneCount, twoCount, threeCount)
    m = max(oneCount, twoCount, threeCount)
    for i in ([oneCount, 1], [twoCount, 2], [threeCount, 3]):
        if i[0] == m:
            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