문제 풀이
def solution(answers):
answer = []
# 수포자의 찍는 방식
math_hater = [[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
# 수포자의 점수 배열
answer_cnt = []
# 각 수포자(man)를 돌면서
for man in math_hater:
# 점수 저장을 위한 변수. 하단의 for문을 다 돈 후 0으로 계속 초기화된다.
cnt = 0
# 정답을 확인한다.
for i in range(len(answers)):
# 각 수포자마다 찍는 방식의 주기가 다르다. 이를 처리하기 위해서
# i % len(man), 각 수포자의 찍는 주기로 % 하여 해당 주기를 루프하도록 한다.
if answers[i] == man[i % len(man)]:
# 그렇게 체크한 정답이 맞을 경우 cnt += 1
cnt += 1
# 상단의 for문이 다 돌면 cnt가 해당 수포자의 점수를 나타내는 것이다. 이를 answer_cnt에 삽입.
answer_cnt.append(cnt)
# 수포자의 점수 배열을 enumerate함으로써 해당 수포자에게 고유번호를 부여
# start=1을 사용하여 시작 인덱스를 0이 아닌 1로 설정한다.
# person은 고유번호를, score는 점수를 나타낸다.
for person, score in enumerate(answer_cnt, start=1):
# score가 해당 배열에서의 최댓값이라면(가장 높은 점수를 받은 사람이라면)
if score == max(answer_cnt):
# 해당 person을 answer에 삽입.
answer.append(person)
return answer
문제 링크
programmers.co.kr/learn/courses/30/lessons/42840?language=python3
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [Python] 카펫 (0) | 2021.01.02 |
---|---|
[프로그래머스] [Python] 소수 찾기 (0) | 2020.12.26 |
[프로그래머스] [Python] H-Index (0) | 2020.12.09 |
[프로그래머스] [Python] 가장 큰 수 (0) | 2020.12.07 |
[프로그래머스] [Python] K번째 수 (0) | 2020.12.03 |