공부/알고리즘
[python] Codility Lesson 4-2. MaxCounters
richpark
2021. 7. 25. 03:07
Time Over에 걸려 77점 코드에서 2시간 가량 풀집중해서 풀다가 한숨 크게 쉬고 다른사람이 짠거 살펴보았다.
특출나게 한 방법들은 딱히 보이진 않았고 중간 중간 살짝 가미된... 왜 이렇게 생각 못했을까 하는 아쉬움이 크게 남은 문제였다.
1. 77점 타임오버된 코드
def solution(N, A):
# write your code in Python 3.6
answer_list = [0 for _ in range(N)]
counter = 0
for index, value in enumerate(A):
if value < N+1:
answer_list[value-1] += 1
counter +=1
else:
if counter != 0:
max_val = max(answer_list) #스트레스의
answer_list = [max_val for _ in range(N)]# 원인
counter = 0
return answer_list
2. 100 pass 한 다른분이 작성한 코드 (출처: https://imksh.com/68 )
def solution(N,A):
savemaximum = 0
maximum = 0
counter = [0]*N
for i in range(len(A)):
if A[i]<=N:
if counter[A[i]-1]<savemaximum:
counter[A[i]-1]=savemaximum
counter[A[i]-1]+=1
maximum = max(counter[A[i]-1],maximum)
else:# N보다 큰 수가 들어오면 maximum으로 동기화
savemaximum = maximum
for i in range(N):
if counter[i]<savemaximum:
counter[i]=savemaximum
return counter
728x90