https://school.programmers.co.kr/learn/courses/30/lessons/42840
13분
찍는 방식을 pattern 리스트에 저장해두고, for문으로 순회하면서 몇개를 맞췄는지 카운팅했다.
이때 패턴 1회를 전부 돌고나면, 다시 처음 패턴으로 돌아오도록 인덱스를 초기화했다.
그러면 배열에 1번,2번,3번 수포자가 각각 몇문제씩 맞췄는지 숫자가 들어있을거고,
그중 가장 높은 점수를 변수에 저장해두고 가장 높은 점수를 얻은 수포자 번호를 answer 배열에 추가해준다!
전형적인 완전탐색 문제.
def solution(answers):
answer = []
pattern = [[1,2,3,4,5], [2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]]
score = []
for p in pattern:
idx = 0
cnt = 0
for i in range(len(answers)):
if idx == len(p):
idx = 0
if answers[i] == p[idx]:
cnt += 1
idx += 1
score.append(cnt)
high_score = max(score)
for i in range(len(score)):
if score[i] == high_score:
answer.append(i+1)
return answer
다른 사람들 풀이를 봤는데 enumerate()를 사용한 코드가 있어서 수정해봤다.
그리고 인덱스 갱신하는 부분도 % 연산자를 활용한 방식으로 수정했다.
def solution(answers):
answer = []
pattern = [[1,2,3,4,5], [2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]]
score = []
for p in pattern:
cnt = 0
for i, a in enumerate(answers):
if a == p[i%len(p)]:
cnt += 1
score.append(cnt)
high_score = max(score)
for i in range(len(score)):
if score[i] == high_score:
answer.append(i+1)
return answer
for i, el in enumerate([”A”, “B”, “C”]):
print(i, el)
"""
출력결과 ...
0 A
1 B
2 C
"""