๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/20920)
<์๋จ์ด ์๊ธฐ๋ ๊ดด๋ก์>
๋ฌธ์
ํ์์ด๋ ์ด๋ฒ ์์ด ์ํ์์ ํ๋ฆฐ ๋ฌธ์ ๋ฅผ ๋ฐํ์ผ๋ก ์์ด ๋จ์ด ์๊ธฐ๋ฅผ ํ๋ ค๊ณ ํ๋ค.
๊ทธ ๊ณผ์ ์์ ํจ์จ์ ์ผ๋ก ์์ด ๋จ์ด๋ฅผ ์ธ์ฐ๊ธฐ ์ํด ์์ด ๋จ์ด์ฅ์ ๋ง๋ค๋ ค ํ๊ณ ์๋ค.
ํ์์ด๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ๋จ์ด์ฅ์ ๋จ์ด ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ ์์๋ฅผ ์ฐจ๋ก๋ก ์ ์ฉํ์ฌ ๋ง๋ค์ด์ง๋ค.
1. ์์ฃผ ๋์ค๋ ๋จ์ด์ผ์๋ก ์์ ๋ฐฐ์นํ๋ค.
2. ํด๋น ๋จ์ด์ ๊ธธ์ด๊ฐ ๊ธธ์๋ก ์์ ๋ฐฐ์นํ๋ค.
3. ์ํ๋ฒณ ์ฌ์ ์์ผ๋ก ์์ ์๋ ๋จ์ด์ผ์๋ก ์์ ๋ฐฐ์นํ๋ค
โ
M๋ณด๋ค ์งง์ ๊ธธ์ด์ ๋จ์ด์ ๊ฒฝ์ฐ ์ฝ๋ ๊ฒ๋ง์ผ๋ก๋ ์ธ์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๊ธธ์ด๊ฐ M์ด์์ธ ๋จ์ด๋ค๋ง ์ธ์ด๋ค๊ณ ํ๋ค.
ํ์์ด๊ฐ ๊ดด๋ก์ด ์๋จ์ด ์๊ธฐ๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก ๋จ์ด์ฅ์ ๋ง๋ค์ด ์ฃผ์.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์์ด ์ง๋ฌธ์ ๋์ค๋ ๋จ์ด์ ๊ฐ์ N๊ณผ ์ธ์ธ ๋จ์ด์ ๊ธธ์ด ๊ธฐ์ค์ด ๋๋ M์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. (1≤N≤100000, 1≤M≤10)
๋์งธ ์ค๋ถํฐ N+1๋ฒ์งธ ์ค๊น์ง ์ธ์ธ ๋จ์ด๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ด๋์ ์ ๋ ฅ์ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ฃผ์ด์ง๋ฉฐ ๋จ์ด์ ๊ธธ์ด๋ 10์ ๋์ง ์๋๋ค. ๋จ์ด์ฅ์ ๋จ์ด๊ฐ ๋ฐ๋์ 1๊ฐ ์ด์ ์กด์ฌํ๋ ์ ๋ ฅ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
ํ์์ด์ ๋จ์ด์ฅ์ ๋ค์ด ์๋ ๋จ์ด๋ฅผ ๋จ์ด์ฅ์ ์์ ์์นํ ๋จ์ด๋ถํฐ ํ ์ค์ ํ ๋จ์ด์ฉ ์์๋๋ก ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
if __name__=='__main__':
n,m=map(int,sys.stdin.readline().split())
dict={}
for i in range(n):
x=sys.stdin.readline().strip() # ๋จ์ด ์
๋ ฅ
if len(x)>=m: # ๊ธธ์ด๊ฐ m ์ด์์ธ ๋จ์ด๋ค๋ง ์ธ์
if x in dict: # ์ด๋ฏธ ์์ผ๋ฉด value +1
dict[x]+=1
else: # ์์ผ๋ฉด key,value ์ถ๊ฐ
dict[x]=1
# ์ ๋ ฌ ๊ธฐ์ค) ์์ฃผ ๋์ค๋ ๋จ์ด, ๊ธธ์ด ๊ธธ์๋ก, ์ํ๋ฒณ ์ฌ์ ์
dict=sorted(dict.items(),key=lambda x:(-x[1],-len(x[0]),x[0]))
for i in dict: # ์ถ๋ ฅ
print(i[0])
- ๋จ์ด ์
๋ ฅ ์ M ์ด์์ธ ๋จ์ด๋ง dict์ ์ถ๊ฐ
-> key๊ฐ ์ด๋ฏธ ์์ผ๋ฉด value +1 , ์์ผ๋ฉด key, value ์ถ๊ฐ - sorted ์ ๋ ฌ: ์ ๋ ฌ ๊ธฐ์ค) ์์ฃผ ๋์ค๋ ๋จ์ด (value), ๊ธธ์ด ๊ธธ์๋ก (len), ์ํ๋ฒณ ์ฌ์ ์ (key)
์๊ฐ๐ค
๋์ ๋๋ฆฌ์ ์ ๋ ฌ๋ง ํ ์ค ์๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 11399_ATM (0) | 2021.10.20 |
---|---|
[Baekjoon] 1662_์์ถ (0) | 2021.10.10 |
[Baekjoon] 16922_๋ก๋ง ์ซ์ ๋ง๋ค๊ธฐ (0) | 2021.10.06 |
[Baekjoon] 1935_ํ์ ํ๊ธฐ์2 (0) | 2021.10.04 |
[Baekjoon] 1874_์คํ ์์ด (0) | 2021.10.01 |