dansan0303   2년 전

시간초과가 뜨는 이유를 모르겠습니다 ㅠㅠ

kong_22   2년 전

최빈값을 구할 때 counts = [lst.count(i) for i in setList]로 하셨는데요,

리스트의 count()메서드를 사용하면 lst 리스트를 모두 돌면서 원소의 갯수를 세줍니다.

이렇게하면 모든 원소 하나하나에 대해서 리스트를 한번씩 돌아야하므로 시간이 오래 걸립니다.

가령 [1,2,3,4] 리스트의 각 원소 개수를 센다면 1의 개수를 세는데 4번, 2의 개수를 세는데 4번,.. 총 16번의 원소 탐색이 필요합니다.

해결책으로는, 리스트를 한번만 돌면서 세주면 됩니다.

가령 첫번째 원소를 보고 1이니까 counts[1] += 1, 두번째 원소를 보고 2이니까 counts[2] += 1, ... 이런 식으로 셀 수 있다면 4번에 가능하다는 의미입니다.

dansan0303   2년 전

너무 감사합니다!! 

댓글을 작성하려면 로그인해야 합니다.