Coding Test/Python

[프로그래머스] 모의고사 (level1, python)

lim.dev 2024. 1. 16. 23:45

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

 

프로그래머스

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

programmers.co.kr

아이디어

person1 = [1, 2, 3, 4, 5] * (length // 5 + 1)
person2 = [2, 1, 2, 3, 2, 4, 2, 5] * (length // 8 + 1)
person3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] * (length // 10 + 1)

처음에는 이렇게 미리 인덱스를 계산해주었는데, 그럴 필요가 없었다.

 

    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]
    
    for i, a in enumerate(answers):
        if person1[i%5] == a: answer[0] += 1
        if person2[i%8] == a: answer[1] += 1
        if person3[i%10] == a: answer[2] += 1

이렇게 인덱스를 조회하면 되기 때문이다!! (나머지에 의해서 0~n-1까지 순회)

 

전체 코드

def solution(answers):
    answer = [0,0,0]
    
    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]
    
    for i, a in enumerate(answers):
        if person1[i%5] == a: answer[0] += 1
        if person2[i%8] == a: answer[1] += 1
        if person3[i%10] == a: answer[2] += 1
    
    return [i+1 for i, a in enumerate(answer) if a == max(answer)]