๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ Python

๋ฐฑ์ค€2108๋ฒˆ ํŒŒ์ด์ฌ #12์ •๋ ฌ-4)ํ†ต๊ณ„ํ•™

by Tamii 2020. 10. 15.
๋ฐ˜์‘ํ˜•

 

๋‚ด ํ’€์ด 1(์˜ค๋‹ต)

from collections import Counter as cc

    n=int(input())
    num=[int(input()) for x in range(n)]
    print(sum(num)//n)
    print(sorted(num)[n//2])
    cnt=cc(num)
    center=cnt.most_common()
    if len(center)>1:
        if center[0][1]==center[1][1]:
            print(center[1][0])
        else:
            print(center[0][0])
    else:
        print(center[0][0])

    print(abs(max(num)-min(num)))

์˜ค๋ฅ˜ :

๋ฐœ์ƒ ์›์ธ:

most_common() ํ•œ center ๋ฆฌ์ŠคํŠธ์˜ ์ •๋ ฌ์ˆœ์„œ

1. ๋นˆ๋„ ๊ธฐ์ค€

2. ๊ฐ’ ๊ธฐ์ค€ 

์ด๋ ‡๊ฒŒ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ๊ฐ’ ๊ธฐ์ค€ ์ •๋ ฌ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

ex) 

์ž…๋ ฅ -1 -2 -3 -1 -2 
center ์ •๋ ฌ [(-1, 2), (-2, 2), (-3, 1)]

 

 

๋‚ดํ’€์ด 2(์˜ค๋‹ต)

from collections import Counter as cc
if __name__=='__main__':
    n=int(input())
    num=[int(input()) for x in range(n)]
    print(sum(num)//n)
    print(sorted(num)[n//2])
    cnt=cc(num)
    center=cnt.most_common()
    if n==1:
        print(center[0])
    center=sorted(center,key=lambda x:(x[1],-x[0]),reverse=True)
    if len(center)>1:
        if center[0][1]==center[1][1]:
            print(center[1][0])
        else:
            print(center[0][0])
    else:
        print(center[0][0])

    print(abs(max(num)-min(num)))

 

์ด๋ ‡๊ฒŒ ๊ณ ์ณฃ๋Š”๋ฐ ์‹œ๊ฐ„์ดˆ๊ณผ

 

๋ฐœ์ƒ์›์ธ:

center sort๋ฅผ ๋˜ ์ •๋ ฌํ•˜๊ณ  ํ•  ํ•„์š”๊ฐ€ ์—†์Œ

์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด sys๋ฅผ ์จ์•ผํ•จ

 

 

 

 

๋‚ด ํ’€์ด (์ตœ์ข…)

from collections import Counter as cc
import sys
if __name__=='__main__':
    n=int(input())
    num=sorted([int(sys.stdin.readline()) for x in range(n)])
    print(round(sum(num)/n))
    print(num[n//2])
    cnt=cc(num)
    center=cnt.most_common(2)		#์ตœ๋นˆ๊ฐ’ 2๊ฐœ๋งŒ center๋กœ ๋ฝ‘๊ธฐ
    if n==1:
        print(center[0][0])			#n์ด 1์ผ๋•Œ (์ด1๊ฐœ)
    else:
        if center[0][1]==center[1][1]:	#๋นˆ๋„์ˆ˜ ๊ฐ™์€๊ฒŒ ์žˆ์„๋• ์ž‘์€ ๊ฐ’
            print(center[1][0])
        else:
            print(center[0][0])
    print(num[n-1]-num[0] if n!=1 else 0)

- most_common(2)  : 2๋ฒˆ์งธ ์ž‘์€์ˆ˜ ๊นŒ์ง€๋งŒ ํ•„์š”ํ•˜๋‹ˆ ์ตœ๋นˆ 2๊ฐœ๋งŒ ๋ฝ‘๊ธฐ

- num๋ฆฌ์ŠคํŠธ๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ๋ฐ”๋กœ์ •๋ ฌ : most_commonํ• ๋•Œ ๋”ฐ๋กœ ์ •๋ ฌํ•  ํ•„์š”๊ฐ€ ์—†์Œ

 

 

 

๋ฐฐ์šด ๊ฒƒ

 

โ€ป collections ์˜ Counter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 

from collections import Counter as cc

Counter๋ฅผ cc๋กœ ํ•ด์„œ ์“ฐ๊ฒ ๋‹ค.

as cc ์ƒ๋žต ๊ฐ€๋Šฅ

object = Counter( ์ž…๋ ฅ๋ฐฐ์—ด )

์ถœ๋ ฅ๋ฐฐ์—ด =object.most_common()

object= cc( ์ž…๋ ฅ๋ฐฐ์—ด)
์ถœ๋ ฅ๋ฐฐ์—ด=object.most_common()

most_common(2) : ์ตœ๋นˆ๊ฐ’ 2๊ฐœ๋งŒ ์ถœ๋ ฅ

 

์ถœ๋ ฅ ์ˆœ์„œ ๊ธฐ์ค€

๋นˆ๋„ ํฐ ์ˆœ์„œ๋Œ€๋กœ( ๋นˆ๋„ ๋‚ด๋ฆผ์ฐจ์ˆœ)

ex)

[(-1, 2), (-2, 2), (-3, 1)]

 

โ€ป lambda

center=sorted(center,key=lambda x:(x[1],-x[0]),reverse=True)
[(-1, 2), (-2, 2), (-3, 1)]
[(-2, 2), (-1, 2), (-3, 1)]

1)  x[1]๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

2)  x[0] ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

 

์‹ค์ œ๋กœ ์“ฐ์ง„ ์•Š์•˜์ง€๋งŒ, ์ •๋ ฌ๊ณผ lambda๋ฅผ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ์Œ

๋Œ“๊ธ€