문제 풀이/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