Published:
Updated:

  • 이런 패턴을 찾는 문제 유형은 수학 문제에서나 봤지 코테 문제에서는 처음이라 낯설긴 했다.
  • if answer == pattern[i % len(pattern)]
    • 이 부분이 확실히 이해가 어려울 수 있는데 자기가 이해할 수 있는 네이밍이 진짜 중요한 것 같다.


Solution

from typing import List


def solution(answers: List[int]) -> List[int]:
    # 세 수포자들의 정답 패턴 정의
    patterns = [
        [1, 2, 3, 4, 5],
        [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    ]

    # 수포자들이 맞힌 정답의 수
    scores = [0, 0, 0]

    for i, answer in enumerate(answers):
        for j, pattern in enumerate(patterns):
            # 패턴이 나누어떨어지면 이 패턴에 맞는 수포자란 뜻이므로
            # 그 수포자에 맞는 index(j)의 score를 1 추가
            if answer == pattern[i % len(pattern)]:
                scores[j] += 1

    max_score = max(scores)
    # 1을 더해줘야 0번째가 1번째 수포자가 됨
    return [i + 1 for i, score in enumerate(scores) if score == max_score]


print(solution([1, 2, 3, 4, 5]))
print(solution([1, 3, 2, 4, 2]))


Reference

Leave a comment