과거의 유산들/python

collections.Counter

빈나 2022. 4. 23. 23:35
반응형

2108번 최빈값을 구할려고 하는데

mmax = 0
mmaxn = 0
dup =[]
for i in stg:
    if mmax<stg.count(i):
        if len(dup)>0:
            dup.clear()
        mmax = stg.count(i)
        mmaxn = i
    elif mmax == stg.count(i):
        dup.append(int(mmaxn))
        dup.append(i)
dup = set(dup)
dup =list(dup)
if len(dup)>1:
    dup.sort()
    print(dup[1])
else:
    print(mmaxn)

웅장한 코드로 내니까 당연하게도 시간초과뜨면서 틀렸다.

아무리 고민해도 모르겠어서 살짝 엿보기해보니까 아예 Counter라는 함수를 따로 써야했다.

나는 몰랐기에 기록해둔다.

Counter.most_common() 이렇게 하면 입력 된 값의 갯수를 튜플값으로 반환하고 리스트로 감싸서 가장 최빈값을 앞에서부터 나열한다.

Counter.most_Common(n)을 입력하면 상위 n개의 값만을 출력해주고 만다.

 

+ 어떤 문자열을 Counter()하면 자료들이 나온 빈도값을 새로운 dictionary로 반환해준다.

 

반응형

'과거의 유산들 > python' 카테고리의 다른 글

얕은 복사 깊은 복사  (0) 2022.06.26
전역변수  (0) 2022.06.11
range 역순을 할때  (0) 2022.04.19
enumerate  (0) 2022.04.06
ascii 코드 변환  (0) 2022.03.26