728x90
[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ์ด ๋ฐฉ๋ฒ
1๏ธโฃ ๊ทค์ ์ข ๋ฅ๋ณ ๊ฐ์ ํ์
- ๊ทค์ ํฌ๊ธฐ๋ณ๋ก ๋ช ๊ฐ์ฉ ์๋ ๊ฐ์๋ฅผ ์ผ๋ค. (Counter() ํจ์ ์ด์ฉ)
from collections import Counter
tangerine = [1, 3, 2, 3, 2, 4, 4, 4, 4]
print(Counter(tangerine))
- ์ถ๋ ฅ ๊ฒฐ๊ณผ : Counter({4: 4, 3: 2, 2: 2, 1: 1})
2๏ธโฃ ๊ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
- ๊ทค์ ๊ฐ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. ์ด๋ ๊ฐ์๊ฐ ๋ง์ ์ข ๋ฅ๋ถํฐ ์ ํํ๋๋ก ํ๊ธฐ ์ํจ์ด๋ค.
- ์ ์์์์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉด [(4, 4), (3, 2), (2, 2), (1, 1)] ์ด ๋๋ค.
3๏ธโฃ ๊ฐ์๊ฐ ๋ง์ ์ข ๋ฅ๋ถํฐ ์ ํ
- ๊ฐ์๊ฐ ๋ง์ ๊ทค ์ข ๋ฅ๋ถํฐ ์ ํํ์ฌ k๊ฐ ์ด์์ ๊ทค์ ๊ณ ๋ฅด๋ ๊ฒ์ด ์ต์ ์ข ๋ฅ๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
4๏ธโฃ ํ์ํ ์ข ๋ฅ์ ๊ฐ์๋ฅผ ์ธ๊ธฐ
- ๊ฐ์๊ฐ ๋ง์ ์ข ๋ฅ๋ถํฐ ์ ํํ๋ฉด์ k๊ฐ ์ด์์ด ๋๋ ์์ ์์ ์ ํํ ๊ทค ์ข ๋ฅ์ ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
Solution
from collections import Counter
def solution(k, tangerine):
answer = 0
tangerine = sorted(Counter(tangerine).items(), key=lambda x: x[1], reverse=True)
for num, cnt in tangerine:
if k > 0:
k -= cnt
answer += 1
else: break
return answer
์๊ฐ ๋ณต์ก๋
- ๊ทค์ ๊ฐ์๋ฅผ ์ธ๋ ๋ฐ O(n) (n ์ ๊ทค ๋ฐฐ์ด์ ๊ธธ์ด)
- ๊ฐ์๋ฅผ ์ ๋ ฌํ๋ ๋ฐ O(mlogm) (m ์ ๊ทค ์ข ๋ฅ์ ๊ฐ์)
- ์ข ๋ฅ๋ฅผ ํ์ํ๋ฉฐ k๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๋ฐ ์ต์ ์ ๊ฒฝ์ฐ O(m)
๋ฐ๋ผ์ ์ ์ฒด ์๊ฐ ๋ณต์ก๋๋ O(n + mlogm) ์ด๋ค.
728x90
'๐งฉ Algorithm > [Programmers] Level 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L2. ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (Python) (0) | 2024.12.02 |
|---|---|
| [Programmers] L1. ๋ช ์์ ์ ๋น (์ต์ ํ/Python) (0) | 2024.11.16 |
| [Programmers] L2. ๊ตฌ๋ช ๋ณดํธ (Python/ํฌ ํฌ์ธํฐ) (0) | 2024.11.15 |
| [Programmers] L2. ์์ด ๋๋ง์๊ธฐ (Python) (1) | 2024.11.11 |
| [Programmers] L2. ์ ํ์ ์๊ฐ ์ด๋ (Python) (0) | 2024.11.11 |