Algorithm

모의고사 / 프로그래머스

김예나 2025. 2. 28. 10:57

 

첫번째 시도

  • 인덱스를 초기화하는 부분에서 문제 발생 -> 나머지 연산자로 해결
def solution(answers):
    sol1 = [1, 2, 3, 4, 5]
    sol2 = [2, 1, 2, 3, 2, 4, 2, 5]
    sol3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    idx1 = 0
    idx2 = 0
    idx3 = 0

    cnt = {1:0, 2:0, 3:0}

    for i in answers:
        if idx1 < len(sol1):
            if i == sol1[idx1]:
                cnt[1] = cnt[1] + 1
                idx1 = idx1 + 1
            else:
                idx1 = idx1 + 1
        else:
            idx1 = 0

        if idx2 < len(sol2):
            if i == sol2[idx2]:
                cnt[2] = cnt[2] + 1
                idx2 = idx2 + 1
            else:
                idx2 = idx2 + 1
        else:
            idx2 = 0

        if idx3 < len(sol3):
            if i == sol3[idx3]:
                cnt[3] = cnt[3] + 1
                idx3 = idx3 + 1
            else:
                idx3 = idx3 + 1
        else:
            idx3 = 0

    max_val = max(cnt.values())
    ans = []
    for i in cnt:
        if cnt[i] == max_val:
            ans.append(i)

    ans.sort()
    return ans

 

정답

  • 나머지연산자로 인덱스 구현
def solution(answers):
    sol1 = [1, 2, 3, 4, 5]
    sol2 = [2, 1, 2, 3, 2, 4, 2, 5]
    sol3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    idx1 = 0
    idx2 = 0
    idx3 = 0

    cnt = {1:0, 2:0, 3:0}

    for i in answers:

        if i == sol1[idx1 % len(sol1)]:
            cnt[1] = cnt[1] + 1
        idx1 = idx1 + 1

        if i == sol2[idx2 % len(sol2)]:
            cnt[2] = cnt[2] + 1
        idx2 = idx2 + 1

        if i == sol3[idx3 % len(sol3)]:
            cnt[3] = cnt[3] + 1
        idx3 = idx3 + 1

    max_val = max(cnt.values())
    ans = []
    for i in cnt:
        if cnt[i] == max_val:
            ans.append(i)

    ans.sort()
    return ans