프로그래머스 코딩테스트 고득점 Kit_완전탐색_모의고사

Minhee kang·2021년 10월 7일
0

문제 보러 가기👈 클릭!

💡 풀이

✔ 풀이 방법

  • 브루트포스 풀이
  • 각 수포자의 정답을 answers길이 이상 할당
  • person = {수포자 : 정답 개수}를 선언하고, answers을 반복하며 답을 맞췄을때, 해당 수포자 키의 값을 1 증가
  • 리스트에 최대값을 가지는 키 값을 담아 return

구현 코드👇

def solution(answers):
    answer = []
    
    l = len(answers)
    person1 = [1, 2, 3, 4, 5] * (l // 5 + 1)
    person2 = [2, 1, 2, 3, 2, 4, 2, 5] * (l // 5 + 1)
    person3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] * (l // 5 + 1)
    
    person = {1: 0, 2: 0, 3: 0}
    for idx, val in enumerate(answers):
        if person1[idx] == val:
            person[1] += 1
        if person2[idx] == val:
            person[2] += 1
        if person3[idx] == val:
            person[3] += 1

    return [p for p in person if person[p] == max(person.values())]

구현 코드(모듈러 연산 이용)👇

def solution(answers):
    answer = []
    
    l = len(answers)
    person1 = [1, 2, 3, 4, 5]
    person2 = [2, 1, 2, 3, 2, 4, 2, 5] 
    person3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    person = {1: 0, 2: 0, 3: 0}
    for idx, val in enumerate(answers):
        if person1[idx % 5] == val:
            person[1] += 1
        if person2[idx % 8] == val:
            person[2] += 1
        if person3[idx % 10] == val:
            person[3] += 1

    return [p for p in person if person[p] == max(person.values())]

📝 기억해라 모듈러 연산!

0개의 댓글