d=collections.Counter(a);
M=max(d.values())
로 대체하면 통과합니다.
M=max([a.count(x)for x in set(a)]) 에서 count 함수가 반복적으로 호출돼서 사실은 O(n2)가 되는 것 같네요.
2108번 - 통계학
d=collections.Counter(a);
M=max(d.values())
로 대체하면 통과합니다.
M=max([a.count(x)for x in set(a)]) 에서 count 함수가 반복적으로 호출돼서 사실은 O(n2)가 되는 것 같네요.
링크의 세 번째 답변을 보시면 작성하신 방식의 count 와 Counter 클래스의 성능 차이를 확인하실 수 있습니다.
클래스가 쓰기 싫다! 하면 아래처럼 급조해서 써도 되겠지만 코드이해도나 성능이나 Counter가 나은 것 같네요.
댓글을 작성하려면 로그인해야 합니다.
mimel 6년 전
for문은 입력받을 때, M값(최빈값의 빈도수), m값(최빈값) 구할 때 쓰고 있고 달리 시간 잡아먹을 부분은 a.sort()정도인데,
정답자 파이썬 숏코딩 길이가 182B까지 떨어지는 걸 보면 sort함수 문제는 아닐 것 같고
입력시나 m 계산에서 시간복잡도는 기껏해야 O(n)일텐데
[a.count(x)for x in a]연산이 많이 느린가요?