평균은 넘겠지

항상 런타임이 문제다. 시간복잡도에 굉장히 민감하게 반응하는듯하다. 근데 이문제는 내가생각할수 있는 방법은 무조건 루프가 여러번 돌아야한다.

#최초코드
n=int(input())
result=[]

for _ in range(0,n):
  r=[int(i) for i in input().split()]
  poped=r.pop(0)
  r=r[:r[0]]
  avg=sum(r)/poped
  over=0
  for i in r:
    if i>avg:
      over+=1
  result.append('%.3f'%((float(over)/len(r)*100)));

for s in result:
  print(s)

개선점은result를 모아서 출력하지 않아도 된다는것 그렇기 때문에 result변수 자체가 필요없어졌고(공간복잡도), 배열 r을 제정의하지 않아도 되기때문에 아무래도 연산시간이 감소한다. 추가로 %를 안써줬다.

#해답코드
n=int(input())

for _ in range(0,n):
  r=[int(i) for i in input().split()]
  poped=r.pop(0)
  avg=sum(r)/poped
  over=0
  for i in r:
    if i>avg:
      over+=1
  print('%.3f'%((float(over)/len(r)*100))+'%');

results matching ""

    No results matching ""