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

๐Ÿฅด์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก 

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก ] ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ Greedy!!!

[์ด๊ฑฐ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค, ๋‚˜๋™๋นˆ] ์ฑ…์„ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๐ŸŒ€๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐ŸŒ€

: ์ง€๊ธˆ ๋‹น์žฅ ์ข‹์€ ๊ฒƒ๋งŒ ๊ณ ๋ฅด๊ธฐ๐Ÿฅด

 

โœ… ์˜ˆ์ œ 1) ๊ฑฐ์Šค๋ฆ„๋ˆ

N์›์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผํ•จ. ์นด์šดํ„ฐ์—๋Š” 500, 100, 50, 10์›์งœ๋ฆฌ ๋™์ „์ด ๋ฌดํ•œํžˆ ์žˆ์Œ. ๊ฑฐ์Šฌ๋Ÿฌ์ค˜์•ผ ํ•  ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋Š”? (N์€ ํ•ญ์ƒ 10์˜ ๋ฐฐ์ˆ˜์ž„)

๋‚˜์˜ ํ’€์ด~~~~

N = int(input())
num = 0

while 1:
    if N > 500:
        N = N - 500
        num += 1
    elif N > 100:
        N = N - 100
        num += 1
    elif N > 50:
        N = N - 50
        num += 1
    elif N > 10:
        N = N - 10
        num += 1
    else :
        break
print(num)

์‹คํ–‰ ๊ฒฐ๊ณผ

๋‹ต์•ˆ์˜ˆ์‹œ๋ฅผ ๋ณด๋‹ˆ ๋‚ด ์ฝ”๋“œ๊ฐ€ ์ฐธ ๊ธธ์–ด๋ณด์ธ๋‹ค....ใ…Žใ…Ž

 

๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ํฐ ๋‹จ์œ„๊ฐ€ ํ•ญ์ƒ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐฐ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ํ•ญ์ƒ ์ตœ์ ์˜ ํ•ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ

๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ตœ์ ์˜ ํ•ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.

 

โœ… ์˜ˆ์ œ2) ํฐ ์ˆ˜์˜ ๋ฒ•์น™

ํฌ๊ธฐ n์ธ ๋ฐฐ์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ, m์€ ์ˆซ์ž๊ฐ€ ๋”ํ•ด์งˆ ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜, k๋Š” ์—ฐ์†ํ•ด์„œ ๋”ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ด๋‹ค.

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” k๋Š” ํ•ญ์ƒ m๋ณด๋‹ค ์ž‘์„ ๋•Œ, k์˜ ์ตœ๋Œ“๊ฐ’์€?

(2 <= n <= 1000, 1 <= m <= 10000, 1 <= k <= 10000)

 

๋‚˜์˜ ํ’€์ด)

n, m, k = map(int,input().split())
arr = list(map(int, input().split()))

arr.sort()
res = 0
size = len(arr)

while m != 0:
    for i in (0, k):
        if m == 0:
            break
        m -= 1
        res += arr[size - 1]
    if m == 0:
        break
    res += arr[size - 2]
    m -= 1
print(res)

c์–ธ์–ด๋งŒ ํ•˜๋‹ค๊ฐ€ ํŒŒ์ด์ฌ ํ•˜๋ ค๋‹ˆ ์–ด๋–ป๊ฒŒ ์งœ์•ผํ• ์ง€ ๋Š๋‚Œ์ด ์•ˆ์˜จ๋‹ค....ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•์— ์ต์ˆ™ํ•ด์ ธ์•ผ๊ฒ ๋‹ค....! 

๊ตณ์ด arr์˜ ๊ธธ์ด๋ฅผ ์žด ํ•„์š”๊ฐ€ 1๋„ ์—†๋‹ค. ํŒŒ์ด์ฌ์€ ์Œ์ˆ˜๋กœ ๋’ค์—์„œ ๋ถ€ํ„ฐ ์ธ๋ฑ์‹ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹ด๋ถ€ํ„ด ์ฐธ๊ณ !!! ์ž…์ถœ๋ ฅ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•๋„ ์ต์ˆ™ํ•ด์ ธ์•ผ๊ฒ ๋‹ค.. ์ €๊ฒŒ ๋จธ์„ ์†Œ๋ฆฌ๊ณ ...

 

์ฑ…์—์„œ ์ œ์‹œํ•œ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•!์˜ ์•ฝ๊ฐ„ ๋ณ€ํ˜•)

n, m, k = map(int,input().split())
arr = list(map(int, input().split()))

arr.sort()
res = 0

res += (arr[-1] * k + arr[-2]) * int(m / (k+1))
res += (arr[-1]) * (m % (k+1))

print(res)

์˜ค์˜ค ์ •๋ง ์งง๋‹ค!!!  res๋ฅผ ๋”ํ•˜๋Š” ๋ถ€๋ถ„์„ ํ•œ์ค„๋กœ๋„ ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ณด๊ธฐ ํŽธํ•˜๋ผ๊ณ  ๋‚˜๋ˆ ๋’€๋‹ค.

๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ k๋ฒˆ, ๊ทธ ๋‹ค์Œ์œผ๋กœ ํฐ ์ˆ˜๋ฅผ 1๋ฒˆ ๋”ํ•˜๋Š” ๊ฒƒ์ด ๊ณ„์† ๋ฐ˜๋ณต๋˜๋ฏ€๋กœ ์œ„์™€ ๊ฐ™์ด ํ’€์ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœ… ์˜ˆ์ œ 3) ์ˆซ์ž ์นด๋“œ ๊ฒŒ์ž„

์ˆซ์ž ์นด๋“œ๊ฐ€ n(ํ–‰) * m(์—ด)์œผ๋กœ ๋†“์—ฌ์žˆ๋‹ค. ์›ํ•˜๋Š” ํ–‰์—์„œ ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆซ์ž ์นด๋“œ๋ฅผ ๋ฝ‘์•„์•ผ ํ•จ. ๋ฝ‘์€ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ํฌ๋„๋ก ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆซ์ž์นด๋“œ๋ฅผ ๊ตฌํ•˜๊ธฐ

 

๋‚˜์˜ ํ’€์ด)

n, m = map(int, input().split())
res = 0

for i in range(n):
    arr = list(map(int, input().split()))
    res = max(min(arr), res)

print(res)

 

โœ… ์˜ˆ์ œ 4) 1์ด ๋  ๋•Œ๊นŒ์ง€

์–ด๋–ค ์ˆ˜ n์ด 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ์˜ ๋‘ ๊ณผ์ • ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์„ ํƒํ•˜์—ฌ ์ˆ˜ํ–‰ (๋‹จ ๋‘๋ฒˆ์งธ ์—ฐ์‚ฐ์€ n์ด k๋กœ ๋‚˜๋ˆ ๋–จ์–ด์งˆ ๋•Œ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ)

1. n์—์„œ 1์„ ๋บŒ

2. n์„ k๋กœ ๋‚˜๋ˆ”

n๊ณผ k๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ 1 ํ˜น์€ 2๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜ (์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” n์€ ํ•ญ์ƒ k๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.)

๋‚˜์˜ ํ’€์ด)

n, k = map(int, input().split())
res = 0

while n != 1:
    if n % k == 0:
        res += 1
        n /= k
    else:
        res += 1
        n -= 1
print(res)

 

์ฑ…์—์„œ ์ œ์‹œํ•œ ๋ฐฉ๋ฒ•)

k๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ํ•œ๋ฒˆ์— ๋บ€๋‹ค.

n, k = map(int, input().split())
res = 0

while 1:
    target = (n // k) * k
    res += n - target
    n = target

    if n < k :
        break

    res += 1
    n //= k
res += (n - 1)
print(res)