눈송이의 개발생활
[Programmers Lv.1]모의고사 (Python) 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/42748
내 코드
def solution(answers):
students = [
[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
]
answer = [0, 0, 0]
result = []
for i in range(len(answers)):
if answers[i] == students[0][i % 5]:
answer[0] += 1
if answers[i] == students[1][i % 8]:
answer[1] += 1
if answers[i] == students[2][i % 10]:
answer[2] += 1
m = max(answer)
for i in range(len(answer)):
if m <= answer[i]:
result.append(i + 1)
return result
해결 방법
학생1의 답은 5를 주기로 반복되고, 학생2는 8, 학생3은 10을 주기로 반복된다.
모든 답을 돌면서, 수포자들의 답이 정답과 같으면 해당 학생의 정답 수를 증가시킨다.
answer는 각 학생들의 정답 개수를 저장한 배열이다.
답을 다 돌고 난 뒤에, max가 1이상인 경우를 고려하여 answer배열을 돌면서 가장 큰 값을 가진 학생의 번호를 result 배열에 추가시킨다.
완전탐색 문제라서 모든 배열을 다 돌아야 해결되는 문제였다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers Lv.2]H-Index (Python) (0) | 2022.04.13 |
---|---|
[Programmers Lv.1]완주하지 못한 선수 (Python) (0) | 2022.04.08 |
[Programmers Lv.1]K번째수 (Python) (0) | 2022.04.05 |
[Programmers Lv.1]체육복 (Python) (0) | 2022.04.04 |
[Programmers Lv.1]다트 게임 (Python) (0) | 2022.04.04 |
Comments