๋ฌธ์ ์ค๋ช
๊ฒฝํ๋ ๊ณผ์์์์ ๊ทค์ ์ํํ์ต๋๋ค. ๊ฒฝํ๋ ์ํํ ๊ทค ์ค 'k'๊ฐ๋ฅผ ๊ณจ๋ผ ์์ ํ๋์ ๋ด์ ํ๋งคํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ํํ ๊ทค์ ํฌ๊ธฐ๊ฐ ์ผ์ ํ์ง ์์ ๋ณด๊ธฐ์ ์ข์ง ์๋ค๊ณ ์๊ฐํ ๊ฒฝํ๋ ๊ทค์ ํฌ๊ธฐ๋ณ๋ก ๋ถ๋ฅํ์ ๋ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ์๋ฅผ ์ต์ํํ๊ณ ์ถ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฒฝํ๊ฐ ์ํํ ๊ทค 8๊ฐ์ ํฌ๊ธฐ๊ฐ [1, 3, 2, 5, 4, 5, 2, 3] ์ด๋ผ๊ณ ํฉ์๋ค. ๊ฒฝํ๊ฐ ๊ทค 6๊ฐ๋ฅผ ํ๋งคํ๊ณ ์ถ๋ค๋ฉด, ํฌ๊ธฐ๊ฐ 1, 4์ธ ๊ทค์ ์ ์ธํ ์ฌ์ฏ ๊ฐ์ ๊ทค์ ์์์ ๋ด์ผ๋ฉด, ๊ทค์ ํฌ๊ธฐ์ ์ข ๋ฅ๊ฐ 2, 3, 5๋ก ์ด 3๊ฐ์ง๊ฐ ๋๋ฉฐ ์ด๋๊ฐ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ๊ฐ ์ต์์ผ ๋์ ๋๋ค.
๊ฒฝํ๊ฐ ํ ์์์ ๋ด์ผ๋ ค๋ ๊ทค์ ๊ฐ์ k์ ๊ทค์ ํฌ๊ธฐ๋ฅผ ๋ด์ ๋ฐฐ์ด tangerine์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๊ฒฝํ๊ฐ ๊ทค k๊ฐ๋ฅผ ๊ณ ๋ฅผ ๋ ํฌ๊ธฐ๊ฐ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 1 ≤ k ≤ tangerine์ ๊ธธ์ด ≤ 100,000
- 1 ≤ tangerine์ ์์ ≤ 10,000,000
์ ์ถ๋ ฅ ์

ํ์ด
from collections import Counter
def solution(k, tangerine):
answer = 0
counter = Counter(tangerine)
counts = sorted(counter.values(), reverse=True)
for i in range(len(counts)) :
k -= counts[i]
answer += 1
if k <= 0 :
break
return answer
์ฃผ์ด์ง ๋ฌธ์ ๋ ํ์ด์ฌ์ collections๋ฅผ ํตํด ํ ์ ์๋ค. Counter๋ฅผ importํ๋ฉด ๋ด์ฅ๋์ด ์๋ Counter ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
counter = Counter(tangerine)
// ์คํ๊ฒฐ๊ณผ (์
๋ ฅ๊ฐ: 6, [1, 3, 2, 5, 4, 5, 2, 3])
// Counter({3: 2, 2: 2, 5: 2, 1: 1, 4: 1})
์ด๋ ๊ฒ Counterํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ ฅ๋ ๋ฆฌ์คํธ์์ ๊ฐ ์ซ์๊ฐ ์ด ๋ช ๋ฒ ๋์๋์ง๋ฅผ ๋์ ๋๋ฆฌํํ๋ก ์ธ์ด ์ ์ฅํด์ค๋ค.
์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์ฒฉfor๋ฌธ์ ์ฌ์ฉํด set์ผ๋ก ๋ฐ๊พธ๊ณ , ๊ฐ ์ซ์๊ฐ ๋์ค๋ ํ์๋ฅผ ์ฐพ์ ์ ์ฅํ์ง ์์๋ ๋๋ค.
์๊ฐ๋ณต์ก๋ ๋ํ ํ๋ฒ์ ์ํ๋ก ๋ชจ๋ ๊ตฌํ ์ ์์ผ๋ฏ๋ก O(N)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
์์ผ๋ก ๋ฌธ์ ๋ฅผ ํ๋ค ๋ณด๋ฉด, ํ ๋ฆฌ์คํธ์ ์ซ์๊ฐ ๋ช ๋ฒ ๋์ค๋์ง ๊ตฌํ๋ ๋ฌธ์ ๋ค์ด ์ข ์ข ์๋๋ฐ, collections์ Counter๋ฅผ ๊ธฐ์ตํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
'๐ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] : ๋ฉ๋ฆฌ๋ฐ๊ธฐ (0) | 2025.07.13 |
|---|---|
| [DP] ํ์ด์ฌ์ผ๋ก Dynamic Programming ์ ๋ณตํ๊ธฐ (0) | 2025.07.13 |
| ๋ฐฑ์ค 17219: ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2025.05.13 |
| ๋ฐฑ์ค 10989: ์ ์ ๋ ฌํ๊ธฐ 3 (0) | 2025.05.13 |
| ๋ฐฑ์ค_10718. We love kriii (0) | 2022.08.25 |