Algorithm/๋ฐฑ์ค€(BOJ)

[Python] ๋ฐฑ์ค€ 10989๋ฒˆ ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

_์„ฑํ˜ธ_ 2022. 8. 8. 10:45
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

import sys

input = sys.stdin.readline
N = int(input())
   
# ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ์„ ์–ธ(๋ชจ๋“  ๊ฐ’์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”)
count = [0] * 10001

# ๊ฐ ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐ’ ์ฆ๊ฐ€
for i in range(N):
    count[int(input())] += 1
    
# ๋ฆฌ์ŠคํŠธ์— ๊ธฐ๋ก๋œ ์ •๋ ฌ ์ •๋ณด ํ™•์ธ
for i in range(1, 10001):
    while count[i]:
        print(i)
        count[i] -= 1

 

์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ๋ถ€๋ถ„โ—โ—

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2 ๋ฌธ์ œ์™€ ๋˜๊ฒŒ ์œ ์‚ฌํ•˜๋‹ค๋ผ๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ™์€ ๋‹ต์•ˆ์„ ์ œ์ถœํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ์˜ค๋‹ต ํŒ์ •์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3 ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ 10000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜๋กœ ํ•œ์ •๋˜์–ด ์žˆ๊ณ ,

๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋งŽ์ด ์ค‘๋ณต๋˜์–ด ์žˆ์–ด ๊ณ„์ˆ˜ ์ •๋ ฌ์„ ์ด์šฉํ•˜์—ฌ ํ‘ธ๋Š”๊ฒŒ ์ ์ ˆํ•˜๋‹ค.

๊ณ„์ˆ˜ ์ •๋ ฌ์˜ ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(N + K)์ด๋‹ค.

https://leeseong010.tistory.com/29

 

[Python] ๋ฐฑ์ค€ 2751๋ฒˆ ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2

๋ฌธ์ œ N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š”

leeseong010.tistory.com