해당 문제는
특정한 패턴을 가지고 문제를 찍는 3사람이 주어졌을 때, 랜덤하게 주어진 정답과 비교하여 가장 많은 문제를 많이 맞힌 사람을 리턴하는 문제였다.
def solution(answers):
f=[1,2,3,4,5]
s=[2,1,2,3,2,4,2,5]
t=[3,3,1,1,2,2,4,4,5,5]
result={1:0,2:0,3:0}
for i in range(len(answers)):
if answers[i] == f[i%5]:
result[1] += 1
if answers[i] == s[i%8]:
result[2] += 1
if answers[i] == t[i%10]:
result[3] += 1
return [key for key,value in result.items() if value == max(result.values())]
내가 생각한 답은 이것이다.
사실 처음부터 이렇게 푼 것은 아니고 좀 더 복잡한 방법으로 풀었었다.
간략하게 설명하자면 answers의 길이와 비슷하게 만든 후, 비교하는 방식을 취하였다.
허나, 다른 사람의 풀이를 보고 조금 간략하게 만들고, 또한 가독성을 높일 수 있을 것 같아서, 개선한 코드를 같이 첨부한다.
def solution(answers):
f=[1,2,3,4,5]
s=[2,1,2,3,2,4,2,5]
t=[3,3,1,1,2,2,4,4,5,5]
result={1:0,2:0,3:0}
for i,answer in enumerate(answers):
if answer == f[i%5]:
result[1] += 1
if answer == s[i%8]:
result[2] += 1
if answer == t[i%10]:
result[3] += 1
return [key for key,value in result.items() if value == max(result.values())]
차이는 단 하나, enumerate다.
다른 사람의 코드를 읽어보니 enumerate를 사용했을 때, 훨씬 코드가 읽기 쉬워보였다.
다음에
index와 element를 동시에 사용 할 일이 있을 때