문제 풀이/Programmers

[Programmers/Python] Lv1. 모의고사

망고 ෆ 2024. 6. 7. 23:50
문제
 

프로그래머스

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

programmers.co.kr

 

 

 

문제 요약

 

1번 수포자가 찍는 방식 : 1, 2, 3, 4, 5, ...

2번 수포자가 찍는 방식 : 2, 1, 2, 3, 2, 4, 2, 5, ...

3번 수포자가 찍는 방식 : 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

 

위와 같은 방식으로 3명의 수포자가 답안지를 제출할 때,

answers 에 있는 정답에 따라, 가장 많은 문제를 맞힌 사람을 출력

가장 높은 점수를 받은 사람이 여러명일 경우, 오름차순으로 정렬!

 

 

 

풀이

 

1. 수포자 3명에 대한 답안지와 정답지에 대해 각 문제별로 답 비교

 

2. 수포자 3명 각각의 점수 책정

 

3. 최고점인 사람 출력

    이 때, 최고점이 여러명일 경우, 오름차순으로 출력되도록 한다.

 

def solution(answers):
    answer = []
    
    # 수포자 3명의 답안지 리스트 생성
    supo = [
        [1,2,3,4,5],
        [2,1,2,3,2,4,2,5],
        [3,3,1,1,2,2,4,4,5,5]
    ]

	# 수포자 각각의 점수를 담을 리스트 생성
    score = [0]*3
    
    # 수포자의 답안지와 정답지(answers)에 대해 한문제씩 채점하며 점수 책정
    for i,v in enumerate(answers):
        if supo[0][i%5] == v:
            score[0] += 1
        if supo[1][i%8] == v:
            score[1] += 1
        if supo[2][i%10] == v:
            score[2] += 1
    
    # 점수가 가장 높은 사람 출력
    # 동점자 여러명일 경우 오름차순으로 정렬
    for i,v in enumerate(score):
        if (max(score) == v) & (v>0):
            answer.append(i+1)            

    return answer