아래의 문제를 풀다가
https://school.programmers.co.kr/learn/courses/30/lessons/42840
풀이는 다음과 같다.
answers = [1, 3, 2, 4, 2]
def solution(answers):
one = [1, 2, 3, 4, 5]
two = [2, 1, 2, 3, 2, 4, 2, 5]
three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
score = [0, 0, 0]
winner = [0, 0, 0]
for index, i in enumerate(answers):
if i == one[index % len(one)]:
# print(f"one이 {index}번째 문제 맞힘")
score[0] += 1
if i == two[index % len(two)]:
# print(f"two가 {index}번째 문제 맞힘")
score[1] += 1
if i == three[index % len(three)]:
# print(f"three가 {index}번째 문제 맞힘")
score[2] += 1
max_score = max(score)
for index, i in enumerate(score):
if i == max_score:
winner[index] += index+1
else:
winner[index] = None
result_list = []
for j in winner:
if j is not None:
result_list.append(j)
return result_list
<문제점>
1. max_score를 통해 맞춘사람을 우선적으로 만들어야했고 winner라는 변수를 만들었지만 [1,1,1]처럼 나타나 [1.2.3]처럼 나타나는 방법으로 개선해야했다.
2. winner를 print 할 때, [1.None,None]이 나타나 삭제가 가능한지 찾아봤지만 차라리 result_list를 새로 만들어서 for문을 돌려 해결했다.
리스트 컴프리헨션
최근에 다른 사람들의 풀이를 보면 이런 문법들을 많이들 사용하여 보는 방법은 익혀야겠다고 마음먹었다.
result_list = [x for x in original_list if x is not None]
result_list = []
for x in original_list:
if x is not None:
result_list.append(x)