728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42840

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

# 접근 방법

1. 각 수포자의 정답 반복문을 리스트로 만든 후 answers 배열을 for문 통해 순회

2. 각 수포자의 길이의 나머지로 반환하게 되면 12345 12345와 같이 반복할 수 있다.

3. 답안지와 숫자가 일치하는 경우만 1씩 카운트 해주며 각자 맞춘 개수 기록

4. 제일 많이 맞춘 사람 도출 !!

 

def solution(answers):
    answer = []
    person = [0] * 3 # 3명의 수포자가 맞춘 개수를 넣을 리스트
    person_1 = [1, 2, 3, 4, 5] # 1번 수포자의 답
    person_2 = [2, 1, 2, 3, 2, 4, 2, 5] # 2번 수포자의 답
    person_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] # 3번 수포자의 답

    # 맞춘 개수를 확인
    for i in range(len(answers)):
        # 1번 수포자는 5개의 답이 반복되므로 [i%5] 해줌
        if answers[i] == person_1[i%5]:
            person[0] += 1
        # 2번 수포자는 8개의 답이 반복되므로 [i%8] 해줌
        if answers[i] == person_2[i%8]:
            person[1] += 1
        # 3번 수포자는 10개의 답이 반복되므로 [i%10] 해줌
        if answers[i] == person_3[i%10]:
            person[2] += 1

    genius = max(person) # 가장 많이 맞춘 사람의 개수 
    # 가장 많이 맞춘 사람
    for i in range(len(person)):
        if person[i] == genius:
            answer.append(i+1)
    return answer
728x90