๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 20920_์˜๋‹จ์–ด ์•”๊ธฐ๋Š” ๊ดด๋กœ์›Œ

๋ฟŒ์•ผ._. 2021. 10. 7. 11:01

Silver III

๋ฌธ์ œ(์ถœ์ฒ˜: 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)

์ƒ๊ฐ๐Ÿค”

 

๋”•์…”๋„ˆ๋ฆฌ์˜ ์ •๋ ฌ๋งŒ ํ•  ์ค„ ์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.