[Algorithm] Greedy
๐ฃ
๋ณธ ํฌ์คํธ๋ โ์ด๊ฒ์ด ์ทจ์
์ ์ํ ์ฝ๋ฉ ํ
์คํธ๋ค with ํ์ด์ฌโ์ ๊ณต๋ถํ๊ณ ์์ฑํ์์ต๋๋ค :)
click > (์ด์ฝํ
2021) ์ด๊ฒ์ด ์ทจ์
์ ์ํ ์ฝ๋ฉ ํ
์คํธ๋ค with ํ์ด์ฌ
Greedy
์ด๋ก
๋น์ฅ ์ข์ ๊ฒ๋ง ์ ํํ๋ ๊ทธ๋ฆฌ๋
Greedy ์๊ณ ๋ฆฌ์ฆ์ โํ์์ โ ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ โํ์ฌ ์ํฉ์์ ์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒโ์ ์๋ฏธํ๋ค.
๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น๊ตํ์ ๋ โ์ฌ์ ์ ์ธ์ฐ๊ณ ์์ง ์์๋ ํ ์ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฌธ์ ์ ํโ์ผ๋ก ๋ฌธ์ ์ถ์ ์ ํญ์ด ๋งค์ฐ ๋๊ณ ์ฐฝ์๋ ฅ์ ์๊ตฌํ๊ธฐ ๋๋ฌธ์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์ฒ๋ผ ํน์ด ์ผ์ด์ค๋ฅผ ์ ์ธํ๊ณ ๋ ๋จ์ ์๊ธฐ๋ฅผ ํตํด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋์ฒํ๊ธฐ๋ ์ด๋ ต๋ค.
[์์ 3-1] ๊ฑฐ์ค๋ฆ๋
n = 1260
count = 0
# ํฐ ๋จ์์ ํํ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ธ
coin_types = [500, 100, 50, 10]
for coin in coin_types:
count += c // coin
n %= coin
print(count)
์ค์ ๋ฌธ์
[์ค์ ๋ฌธ์ 1] ํฐ ์์ ๋ฒ์น
๋จ์ํ๊ฒ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ ํธ๋ ๋ฐฉ๋ฒ. (M์ ํฌ๊ธฐ๊ฐ 100์ต ์ด์์ด๋ฉด ์๊ฐ์ด๊ณผ! )
# solution_1
N, M, K = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort()
answer = 0
for i in range(M):
if i % (K + 1) == K:
answer += arr[-2]
else:
answer += arr[-1]
print(answer)
๋ฐ๋ณต๋๋ ์์ด์ ์ด์ฉํ์ฌ ํธ๋ ๋ฐฉ๋ฒ
# solution_2
N, M, K = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort()
answer = 0
cnt = M // (K + 1)
answer = arr[-1] * (M - cnt) + arr[-2] * cnt
print(answer)
[์ค์ ๋ฌธ์ 2] ์ซ์ ์นด๋ ๊ฒ์
๊ฐ ํ๋ง๋ค ๊ฐ์ฅ ์์ ์๋ฅผ ์ฐพ์ ๋ค์ ๊ทธ ์ ์ค์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ถ๋ ฅ
N, M = map(int, input().split())
arr = []
for i in range(N):
arr.append(min(list(map(int, input().split()))))
print(max(arr))
[์ค์ ๋ฌธ์ 3] 1์ด ๋ ๋๊น์ง
์ต๋ํ ๋ง์ด ๋๋๊ธฐ + N์ด K์ ๋ฐฐ์๊ฐ ๋๋๋ก ํจ์จ์ ์ผ๋ก ํ๋ฒ์ ๋นผ๋ ๋ฐฉ์
N, K = map(int, input().split())
answer = 0
while N > 1:
if N % K == 0:
answer += 1
N /= K
else:
answer += int(N % K)
N -= (N % K)
if N == 0:
answer -= 1
print(answer)
๋๊ธ๋จ๊ธฐ๊ธฐ