๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 4358_์ƒํƒœํ•™

๋ฟŒ์•ผ._. 2022. 2. 16. 16:15

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/4358)

<์ƒํƒœํ•™>

๋ฌธ์ œ 

 

์ƒํƒœํ•™์—์„œ ๋‚˜๋ฌด์˜ ๋ถ„ํฌ๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹น์‹ ์€ ๋ฏธ๊ตญ ์ „์—ญ์˜ ๋‚˜๋ฌด๋“ค์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ์ข…์ด ์ „์ฒด์—์„œ ๋ช‡ %๋ฅผ ์ฐจ์ง€ํ•˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

 

 

์ž…๋ ฅ

 

ํ”„๋กœ๊ทธ๋žจ์€ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ๋‚˜๋ฌด ์ข… ์ด๋ฆ„์ด ์ฃผ์–ด์ง„๋‹ค. ์–ด๋–ค ์ข… ์ด๋ฆ„๋„ 30๊ธ€์ž๋ฅผ ๋„˜์ง€ ์•Š์œผ๋ฉฐ, ์ž…๋ ฅ์—๋Š” ์ตœ๋Œ€ 10,000๊ฐœ์˜ ์ข…์ด ์ฃผ์–ด์ง€๊ณ  ์ตœ๋Œ€ 1,000,000๊ทธ๋ฃจ์˜ ๋‚˜๋ฌด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

 

์ถœ๋ ฅ 

 

์ฃผ์–ด์ง„ ๊ฐ ์ข…์˜ ์ด๋ฆ„์„ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ์ข…์ด ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์„ ๋ฐฑ๋ถ„์œจ๋กœ ์†Œ์ˆ˜์  4์งธ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•ด ํ•จ๊ป˜ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

- ์ดˆ๊ธฐ ์ฝ”๋“œ: ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค

 

import sys

if __name__=='__main__':
    dict={}
    all=0

    while True:
        x=sys.stdin.readline().rstrip()
        all+=1
        if not x:
            break
        if x not in dict:
            dict[x]=1
        else:
            dict[x]+=1

    dict=sorted(dict.items())

    for i in dict:
        print(i[0]+' %.4f' %(i[1]/all *100))

 

์ฒ˜์Œ ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด์„œ ์–ด๋ ค์› ๋˜ ์ ์€ ๋‹จ ํ•œ ๊ฐ€์ง€์˜€๋‹ค.

 

โ“ ์–ด๋–ป๊ฒŒ ์—ฌ๋Ÿฌ ์ค„ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๊ฐ€?

์ด ๋ถ€๋ถ„์€ ๋ชฐ๋ผ์„œ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋จผ์ €, while ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. rstrip์„ ํ†ตํ•ด ๋ฌธ์ž์—ด์˜ ๋์„ ์‚ญ์ œํ•˜์—ฌ ๊ทธ ๊ฐ’์ด ์—†์œผ๋ฉด while๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ€๋„๋ก ํ•œ๋‹ค.

 

์ด ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•œ ํ›„ ๋‹ต์ด ์กฐ๊ธˆ ๋‹ฌ๋ž์ง€๋งŒ ๋‚œ '์ด๊ฒŒ ์•„๋‹ˆ๋ฉด ๋‹ต์ด ๋ญ๋žŒ~?'์ด๋ผ๋Š” ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ๋ฐ”๋กœ ์ œ์ถœํ–ˆ๋‹ค.

๊ฒฐ๊ณผ๋Š” 'ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค.'

 

ํ•œ์ฐธ ๊ณ ๋ฏผํ•œ ๋์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์–ด ๋ชจ๋“  ๊ณณ์„ ์ฐพ์•„๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋“ค ๋‚˜์˜ ์ฝ”๋“œ์™€ ๋น„์Šทํ–ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฌธ์ œ ํ•ด๊ฒฐํ• ๊นŒ...๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์‹œ ๋‚ด ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ...ใ…Ž

 

์ด ๋‚˜๋ฌด ๊ฐœ์ˆ˜๋ฅผ ์…€ ๋•Œ ๋งˆ์ง€๋ง‰์— ํ•˜๋‚˜๋ฅผ ๋” ์„ธ๋ฒ„๋ฆฐ ๊ฒƒ์ด์—ˆ๋‹ค. 

ํ—ˆํƒˆํ•จ๊ณผ ์ถฉ๊ฒฉ์ ์ด์—ˆ๋‹ค.

 

์œ„์˜ ๋ฌธ์ œ์ ์„ ์ฝ”์นœ ์ฝ”๋“œ์ด๋‹ค.

 

 

- my solution

import sys

if __name__=='__main__':
    tree={}
    cnt=0

    while True:
        x=sys.stdin.readline().rstrip() 

        if not x: # ์ž…๋ ฅ ๋
            break
        if x not in tree: # key๊ฐ’์ด ์—†์œผ๋ฉด 
            tree[x]=1
        else: # key๊ฐ’์ด ์žˆ์œผ๋ฉด
            tree[x]+=1
        cnt += 1 # ์ด ๋‚˜๋ฌด ์ˆ˜

    tree=sorted(tree.items()) # ์‚ฌ์ „์ˆœ ์ •๋ ฌ

    for i in tree: # ์†Œ์ˆ˜์  4์งธ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•ด์„œ ์ถœ๋ ฅ
        print(i[0]+' %.4f' %(i[1]/cnt *100))

 

  • while
    - ์ž…๋ ฅ
    - ๋” ์ด์ƒ ์ž…๋ ฅ์ด ์—†์œผ๋ฉด break
    - dict์— key๊ฐ’์ด ์—†์œผ๋ฉด ์ถ”๊ฐ€
    - dict์— key๊ฐ’์ด ์žˆ์œผ๋ฉด value +1
    - ์ด ๋‚˜๋ฌด ์ˆ˜ count
  • ์‚ฌ์ „ ์ˆœ ์ •๋ ฌ
  • ์†Œ์ˆ˜์  ๋„ท์งธ ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•ด์„œ ์ถœ๋ ฅ

์ƒ๊ฐ๐Ÿค”

 

๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ์ด์œ ๋ฅผ ๋ฐœ๊ฒฌํ•œ ์ˆœ๊ฐ„ ์ •๋ง ์ถฉ๊ฒฉ์ ์ด์—ˆ๋‹ค. ์•„์ฃผ ์•„์ฃผ ์‚ฌ์†Œํ•œ(?) ์‹ค์ˆ˜๋กœ ๋ช‡ ๋ถ„ ๋™์•ˆ ํ—ค๋งค๋‹ค๋‹ˆ..

๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ํ™•์‹คํ•˜๊ฒŒ ๋‚˜์˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๋ฌธ์ œ์˜€๋‹ค.

 

์ด ๊ธฐํšŒ์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์†Œ์ˆ˜์  ๋„ท์งธ ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ถ€๋ถ„์—์„œ round์™€. f์—์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚œ ์™„์ „ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ... ๋ˆˆ๋ฌผ์„ ํ˜๋ ธ์ง€๋งŒ 

 

์ œ์ถœ ๋งŽ์ด ํ•œ ์ด์œ ๋Š”.. ์ž˜๋ชป๋œ ๋ถ€๋ถ„์„ ์ฐพ์ง€ ๋ชปํ•ด์„œ ๊ดœํžˆ ๋ณ€์ˆ˜๋ช…๋„ ๋ฐ”๊พธ๊ณ  ๋„์ „ํ–ˆ๊ธฐ ๋•Œ๋ฌธ ใ…Ž_ใ…Ž