์ฝ๋ฉํ
์คํธ๋ฅผ.. ๊ธฐ์
์์ ๋ณธ๋ค๊ณ ํ ํ ์ค๋๋ถํฐ ์ ๋๋ก ๊ณต๋ถํ๋ ์ค...
์ ์ด๋ ๊ฒ ๋ฌธ์ ๊ฐ ์ด๋ ค์ธ๊น??? ํ์ง๋ง, ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณต๋ถํ๋ค๋ณด๋ฉด ์ธ์ ๊ฐ ์ฌ๋งํ ๋ฌธ์ ๋ค์ ํ ์ ์๋ ๊ฒฝ์ง์ ์ค๋ฅด์ง ์์๊น?
๊ทธ๋ ๊ฒ ๋๊ธฐ๊น์ง ๋งค์ผ ๊ณต๋ถํ์๊ตฌ! ๐
๋ณต์ก๋ O(N log N)
d.sort() # ์์ ๊ฐ๋ถํฐ ์ ๋ ฌ
total_budget = sum(d[:mid]) # ์์์ mid ๊ฐ๋ง ์ ํํด์ ํฉ์ฐ
๐ค ์์ฐ๋ฌธ์ - ํ๋ก๊ทธ๋๋จธ์ค

์์ ๊ฐ์ด ํน์ ๊ฐ์ ๋ถํฉํ๋๋ก ์กฐํฉ์ ์์ฑํด์ผํ ๋ ์ฌ์ฉํ๋ฉด ์ข์
์ฒ์์ combinations O(2^N) ๋ก ํ์๋ค๊ฐ, ์๊ฐ ์ด๊ณผ๋ก ๋๊ฐ๋ฆฌ ๋๋ค ๐
๊ทธ๋์ GPT์๊ฒ ๋ฌผ์ด๋ณด๋ ์ด ๋ฐฉ๋ฒ์ ์ถ์ฒํด์ฃผ์๋ค.
def solution(d, budget):
answer = 0
left, right = 1, len(d)
d.sort()
total_budget = []
while left <= right:
mid = (left + right) // 2
total_budget = sum(d[:mid])
if total_budget > budget:
right = mid - 1
else:
answer = mid
left = mid + 1
return answer
๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ๊ฐ ์๊ทผ ๋ง์๋ฐ, ๊ทธ๋ด ๋๋ง๋ค ๋ฆฌ์คํธ์์ in์ ์ฐ์ง๋ง๊ณ set์ผ๋ก ํ์
์ ๋ณ๊ฒฝํ ํ in์ ์ฐ๋ฉด ํด์ํ
์ด๋ธ์ ์ฌ์ฉํด์ ๊ฒ์ ์๋๊ฐ O(N) -> O(1)๋ก ํจ์ฌ ๋นจ๋ผ์ง
arr = [3, 5, 1, 7, 9]
target = 7
if target in arr:
print("์ฐพ์๋ค!")
์ ์ฝ๋ ๋ณด๋ค
arr_set = set(arr) ## ์ด๋ ๊ฒ ํ ๋ฒ ํ์
์ ๋ฐ๊ฟ์ฃผ๊ณ ์งํ
if target in arr_set:
print("์ฐพ์๋ค!")
-- ์ถํ ์ ๋ฐ์ดํธ ๋๋๋๋ก ๊ณ์ ์ถ๊ฐ์์