๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/์ด์ฝ”ํ…Œ

[์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค] ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋ชจํ—˜๊ฐ€ ๊ธธ๋“œ

 

๋ฌธ์ œ

 

ํ•œ ๋งˆ์„์— ๋ชจํ—˜๊ฐ€๊ฐ€ N๋ช… ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจํ—˜๊ฐ€ ๊ธธ๋“œ์—์„œ๋Š” N๋ช…์˜ ๋ชจํ—˜๊ฐ€๋ฅผ ๋Œ€์ƒ์œผ๋กœ '๊ณตํฌ๋„'๋ฅผ ์ธก์ •ํ–ˆ๋Š”๋ฐ, '๊ณตํฌ๋„'๊ฐ€ ๋†’์€ ๋ชจํ—˜๊ฐ€๋Š” ์‰ฝ๊ฒŒ ๊ณตํฌ๋ฅผ ๋Š๊ปด ์œ„ํ—˜ ์ƒํ™ฉ์—์„œ ์ œ๋Œ€๋กœ ๋Œ€์ฒ˜ํ•  ๋Šฅ๋ ฅ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

 

๋ชจํ—˜๊ฐ€ ๊ธธ๋“œ์žฅ์ธ ๋™๋นˆ์ด๋Š” ๋ชจํ—˜๊ฐ€ ๊ทธ๋ฃน์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ ์ž ๊ณตํฌ๋„๊ฐ€ X์ธ ๋ชจํ—˜๊ฐ€๋Š” ๋ฐ˜๋“œ์‹œ X๋ช… ์ด์ƒ์œผ๋กœ ๊ตฌ์„ฑํ•œ ๋ชจํ—˜๊ฐ€ ๊ทธ๋ฃน์— ์ฐธ์—ฌํ•ด์•ผ ์—ฌํ–‰์„ ๋– ๋‚  ์ˆ˜ ์žˆ๋„๋ก ๊ทœ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋™๋นˆ์ด๋Š” ์ตœ๋Œ€ ๋ช‡ ๊ฐœ์˜ ๋ชจํ—˜๊ฐ€ ๊ทธ๋ฃน์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. N๋ช…์˜ ๋ชจํ—˜๊ฐ€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์—ฌํ–‰์„ ๋– ๋‚  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฃน ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

 

 

ํ•ด์„ค ์ฝ”๋“œ

 

n = int(input())
data = list(map(int,input().split()))
data.sort()

result = 0 # ์ด ๊ทธ๋ฃน์˜ ์ˆ˜ 
count = 0 # ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜ 

for i in data: # ๊ณตํฌ๋„๋ฅผ ๋‚ฎ์€ ๊ฒƒ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ
  count+= 1  # ํ˜„์žฌ ๊ทธ๋ฃน์— ํ•ด๋‹น ๋ชจํ—˜๊ฐ€๋ฅผ ํฌํ•จ์‹œํ‚ค๊ธฐ 
  if count >= i: # ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜๊ฐ€ ํ˜„์žฌ์˜ ๊ณตํฌ๋„ ์ด์ƒ์ด๋ผ๋ฉด, ๊ทธ๋ฃน ๊ฒฐ์„ฑ 
      result += 1 # ์ด ๊ทธ๋ฃน์˜ ์ˆ˜ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ 
      count = 0 # ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜ ์ดˆ๊ธฐํ™” 

print(result) # ์ด ๊ทธ๋ฃน์˜ ์ˆ˜ ์ถœ๋ ฅ

 

ํ•ด์„ค

 

์ตœ๋Œ€ํ•œ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ์ธ์›์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ๊ฒŒ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์ผ๋‹จ ๋ฆฌ์ŠคํŠธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ค€ ํ›„ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๊ทธ๋ฃน์˜ ์ˆ˜๊ฐ€ ํ˜„์žฌ์˜ ๊ณตํฌ๋„๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ๊ทธ๋ฃน์„ ๊ฒฐ์„ฑํ•ด์ค€ ํ›„ ์ด ๊ทธ๋ฃน์˜ ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜๋Š” ์ดˆ๊ธฐํ™” ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.