๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/Baekjoon

[๋ฐฑ์ค€] ํ›„๋ณด ์ถ”์ฒœํ•˜๊ธฐ / 1713๋ฒˆ / ํŒŒ์ด์ฌ / Python / defaultdict

by J์ ์ฝ” 2020. 10. 21.
728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿ’กsolutions )

๐Ÿ’ฌ defaultdict ์‚ฌ์šฉ -> collections ๋ชจ๋“ˆ์˜ defaultdict๋Š” ๋”•์…”๋„ˆ๋ฆฌ์™€ ๊ฑฐ์˜ ๋น„์Šทํ•˜์ง€๋งŒ key๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด ๋†“์€ ์ดˆ๊ธฐ(default)๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. -> ๊ทธ๋ž˜์„œ ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด get()๋ฉ”์†Œ๋“œ๋กœ ํ‚ค๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํŽธ๋ฆฌํ•จ์ด ์žˆ๋‹ค.
๐Ÿ’ฌ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ถ”์ฒœ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ๋ฝ‘์•„์„œ ์‚ฌ์ง„ํ‹€ ๋ฆฌ์ŠคํŠธ(photo)์— ์žˆ๋Š” ์ง€ ๋จผ์ € ํ™•์ธํ•˜๊ธฐ

๐Ÿ’ฌ ๋น„์–ด์žˆ๋Š” ์‚ฌ์ง„ํ‹€ ์œ ๋ฌด์— ๋”ฐ๋ผ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ -> ๋น„์–ด์žˆ๋Š” ์‚ฌ์ง„ํ‹€์ด ์—†๋‹ค๋ฉด photo ๋ฆฌ์ŠคํŠธ์— ๊ฐ€์žฅ ์ ์€ ์ถ”์ฒœ์„ ๋ฐ›์€ ๋ฒˆํ˜ธ์˜ ํ•™์ƒ์„ ์ฐพ๊ธฐ -> ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ ํ•™์ƒ photo ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œ, ๋™์‹œ์— r_dic์—์„œ๋„ ์‚ญ์ œํ•˜์—ฌ ์ถ”์ฒœํšŸ์ˆ˜ ์ดˆ๊ธฐํ™”(0)

 

๐ŸŽซcode )

from collections import defaultdict

r_dic = defaultdict(int)
n = int(input())
r_cnt = int(input())
r_lst = input().split(' ')
photo = []

for item in r_lst:
    r_dic[item] += 1
    if item in photo:
        continue
        
    elif len(photo) < n:  # ๋‹ค ์ฐจ์ง€ ์•Š์€ ์ƒํƒœ
        photo.append(item)
        
    elif len(photo) == n:  # ๊ฝ‰ ์ฐจ ์žˆ๋Š” ์ƒํƒœ
        min_v = 10000
        for k in photo:
            if r_dic[k] < min_v:
                min_v = r_dic[k]
                d = k
        else:
            photo.remove(d)
            del(r_dic[d])
            photo.append(item)
            
photo = list(map(int, photo))
photo.sort()
print(*photo)

 

๐Ÿ“Œ description )

๋ฌธ์ œ์ถœ์ฒ˜ : www.acmicpc.net/problem/1713

 

1713๋ฒˆ: ํ›„๋ณด ์ถ”์ฒœํ•˜๊ธฐ

์ฒซ์งธ ์ค„์—๋Š” ์‚ฌ์ง„ํ‹€์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1≤N≤20) ๋‘˜์งธ ์ค„์—๋Š” ์ „์ฒด ํ•™์ƒ์˜ ์ด ์ถ”์ฒœ ํšŸ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ์…‹์งธ ์ค„์—๋Š” ์ถ”์ฒœ๋ฐ›์€ ํ•™์ƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒˆํ˜ธ๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ถ”์ฒœ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ๏ฟฝ

www.acmicpc.net

๋ฌธ์ œ

์›”๋“œ์ดˆ๋“ฑํ•™๊ต ํ•™์ƒํšŒ์žฅ ํ›„๋ณด๋Š” ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์ „์ฒด ํ•™์ƒ์˜ ์ถ”์ฒœ์— ์˜ํ•˜์—ฌ ์ •ํ•ด์ง„ ์ˆ˜๋งŒํผ ์„ ์ •๋œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•™๊ต ํ™ˆํŽ˜์ด์ง€์— ์ถ”์ฒœ๋ฐ›์€ ํ•™์ƒ์˜ ์‚ฌ์ง„์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ง„ํ‹€์„ ํ›„๋ณด์˜ ์ˆ˜๋งŒํผ ๋งŒ๋“ค์—ˆ๋‹ค. ์ถ”์ฒœ๋ฐ›์€ ํ•™์ƒ์˜ ์‚ฌ์ง„์„ ์‚ฌ์ง„ํ‹€์— ๊ฒŒ์‹œํ•˜๊ณ  ์ถ”์ฒœ๋ฐ›์€ ํšŸ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํ•™์ƒ๋“ค์ด ์ถ”์ฒœ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ์‚ฌ์ง„ํ‹€์€ ๋น„์–ด์žˆ๋‹ค.
  2. ์–ด๋–ค ํ•™์ƒ์ด ํŠน์ • ํ•™์ƒ์„ ์ถ”์ฒœํ•˜๋ฉด, ์ถ”์ฒœ๋ฐ›์€ ํ•™์ƒ์˜ ์‚ฌ์ง„์ด ๋ฐ˜๋“œ์‹œ ์‚ฌ์ง„ํ‹€์— ๊ฒŒ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค.
  3. ๋น„์–ด์žˆ๋Š” ์‚ฌ์ง„ํ‹€์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ํ˜„์žฌ๊นŒ์ง€ ์ถ”์ฒœ ๋ฐ›์€ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํ•™์ƒ์˜ ์‚ฌ์ง„์„ ์‚ญ์ œํ•˜๊ณ , ๊ทธ ์ž๋ฆฌ์— ์ƒˆ๋กญ๊ฒŒ ์ถ”์ฒœ๋ฐ›์€ ํ•™์ƒ์˜ ์‚ฌ์ง„์„ ๊ฒŒ์‹œํ•œ๋‹ค. ์ด๋•Œ, ํ˜„์žฌ๊นŒ์ง€ ์ถ”์ฒœ ๋ฐ›์€ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํ•™์ƒ์ด ๋‘ ๋ช… ์ด์ƒ์ผ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋Ÿฌํ•œ ํ•™์ƒ๋“ค ์ค‘ ๊ฒŒ์‹œ๋œ ์ง€ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ์‚ฌ์ง„์„ ์‚ญ์ œํ•œ๋‹ค.
  4. ํ˜„์žฌ ์‚ฌ์ง„์ด ๊ฒŒ์‹œ๋œ ํ•™์ƒ์ด ๋‹ค๋ฅธ ํ•™์ƒ์˜ ์ถ”์ฒœ์„ ๋ฐ›์€ ๊ฒฝ์šฐ์—๋Š” ์ถ”์ฒœ๋ฐ›์€ ํšŸ์ˆ˜๋งŒ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  5. ์‚ฌ์ง„ํ‹€์— ๊ฒŒ์‹œ๋œ ์‚ฌ์ง„์ด ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ํ•™์ƒ์ด ์ถ”์ฒœ๋ฐ›์€ ํšŸ์ˆ˜๋Š” 0์œผ๋กœ ๋ฐ”๋€๋‹ค.

ํ›„๋ณด์˜ ์ˆ˜ ์ฆ‰, ์‚ฌ์ง„ํ‹€์˜ ๊ฐœ์ˆ˜์™€ ์ „์ฒด ํ•™์ƒ์˜ ์ถ”์ฒœ ๊ฒฐ๊ณผ๊ฐ€ ์ถ”์ฒœ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ์ข… ํ›„๋ณด๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์‚ฌ์ง„ํ‹€์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1≤N≤20) ๋‘˜์งธ ์ค„์—๋Š” ์ „์ฒด ํ•™์ƒ์˜ ์ด ์ถ”์ฒœ ํšŸ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ์…‹์งธ ์ค„์—๋Š” ์ถ”์ฒœ๋ฐ›์€ ํ•™์ƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒˆํ˜ธ๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ถ”์ฒœ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ถ”์ฒœ ํšŸ์ˆ˜๋Š” 1,000๋ฒˆ ์ดํ•˜์ด๋ฉฐ ํ•™์ƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ 100๊นŒ์ง€์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์‚ฌ์ง„ํ‹€์— ์‚ฌ์ง„์ด ๊ฒŒ์žฌ๋œ ์ตœ์ข… ํ›„๋ณด์˜ ํ•™์ƒ ๋ฒˆํ˜ธ๋ฅผ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•