๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ ๊ธฐ๋ก

์ด์ฝ”ํ…Œ : ๊ทธ๋ฆฌ๋””[ํฐ ์ˆ˜์˜ ๋ฒ•์น™]

by hyeonha 2024. 3. 14.

๊ทธ๋ฆฌ๋””์˜ ๊ฐœ๋…

๊ทธ๋ฆฌ๋””๋Š” ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ์ง€๊ธˆ ๋‹น์žฅ ์ข‹์€ ๊ฒƒ๋งŒ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์ธ ํƒ์š•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

๊ฑฐ์Šค๋ฆ„๋ˆ ์˜ˆ์ œ์™€ ๊ฐ™์ด ๊ฐ€์žฅ ํฐ ํ™”ํ ๋‹จ์œ„๋ถ€ํ„ฐ ๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ฆฌ๋”” ๋ฐฉ์‹์ด๋‹ค

ํฐ ์ˆ˜์˜ ๋ฒ•์น™

์•„์ด๋””์–ด : ( ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ตœ๋Œ€ ์—ฐ์†ํšŸ์ˆ˜๋งŒํผ ๋”ํ•ด์ฃผ๊ณ  + ๊ทธ ๋‹ค์Œ์„ ํฐ ์ˆ˜๋ฅผ ํ•œ๋ฒˆ ๋”ํ•ด์ฃผ๊ธฐ ) ์ด ๊ณผ์ •์„  ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š” ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค

 

๊ตฌํ˜„ 

๊ฐ€์žฅ ํฐ ์ˆ˜ ๊ตฌํ•˜๊ธฐ : ์ธ๋ฑ์Šค๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ˆ˜๊ฐ€ ๊ฐ™์•„๋„ ๋‹ค๋ฅธ ์ˆ˜ ์ทจ๊ธ‰์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— list๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ [0]๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค

๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜ ๊ตฌํ•˜๊ธฐ  : ๊ฐ™์€ ์ด์œ ๋กœ [1]๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

 

๋ฐ˜๋ณต ํšŸ์ˆ˜ : ๋ฐ˜๋ณต ํšŒ์ˆ˜๋Š” m๋ฒˆ ๋งŒํผ ๋ฐ˜๋ณต๋˜์–ด์•ผํ•œ๋‹ค.

 

๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ m๋ฒˆ๋งŒํผ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

count ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉ

 

์ˆœ์ˆ˜ํ•˜๊ฒŒ count ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•ด์„œ m๊ณผ ๊ฐ™์•„์ง€๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๋„๋ก ํ–ˆ๋‹ค.

 

๋‚ด ์ฝ”๋“œ

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

list = list(map(int, input().split()))
list.sort(reverse=True)

max = list[0]
second = list[1]
sum = 0
count=0

for _ in range(m):
  for _ in range(k):
    sum +=max
    count += 1
    if count == m:
      break
  sum += second
  count +=1
  if count ==m:
    break
print(sum)

 

 

๐Ÿ’ก์ƒˆ๋กœ์šด ์•„์ด๋””์–ด 

๋”ํ•  ๋•Œ ๋งˆ๋‹ค m๊ฐ’์„ 1๋งŒํผ ๊ฐ์†Œ์‹œ์ผœ์ฃผ๊ณ   m์ด 0์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์ด ์ข…๋ฃŒ๋˜๋„๋ก ์„ค์ •

 

while True:
  for _ in range(k):
    if count == m:
      break
    sum +=max
    count += 1
  sum += second
  count +=1
  if count ==m:
    break
print(sum)

 

<< ์ฐจ์ด >>

 

for๋ฌธ์„ m๋งŒํผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ <-> while True ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝ

m์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ <-> m == 0 ์ด๋ผ๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

 

๐ŸŒŸ๋ฐฐ์šด์ 

1. ๋ฐ˜๋ณต๋ฌธ ํšŸ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผ์ด์—ˆ๋Š”๋ฐ While True ๋ฌธ์„ ์„ค์ •ํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค! 

2. count ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ count ๋ณ€์ˆ˜๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ ์ค„์ˆ˜๋„ ์žˆ๋Š”๋ฐ m์„ 1์”ฉ ๊ฐ์†Œ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

M์ด ๋” ์ปค์ง„๋‹ค๋ฉด?

ํ˜„์žฌ๋Š” M์ด ์ตœ๋Œ€ 10,000์œผ๋กœ ์ •ํ•ด์ ธ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ M์ด 100์–ต์ด์ƒ์œผ๋กœ ์ปค์งˆ ๊ฒฝ์šฐ์—๋Š” ํ˜„์žฌ์™€ ๊ฐ™์€ ๋ฐ˜๋ณต๋ฌธ ์—ฐ์‚ฐ์„ ์ด์šฉํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด๋ณด์ž!

 

2 4 5 4 6 ์—์„œ

๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6

๋‘๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋Š” 5 

 

๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜์—ด : [6, 6, 6, 5]

๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜์—ด์˜ ๊ธธ์ด : k+1 ์ธ 4์ด๋‹ค

์ˆ˜์—ด์˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜ : m // (k+1) 

๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ :  ๋‚˜๋จธ์ง€ ๋งŒํผ ํฐ ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋กœ ๋”ํ•ด์ง„๋‹ค.

 

์ฆ‰ ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š”  ํšŸ์ˆ˜๋Š” 

= m//(k+1)*k + m % (k+1)

์ด๋‹ค. 

 

์ด์ œ ๋‘๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š” ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

m - ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š”  ํšŸ์ˆ˜ ๋ฅผ ํ•ด์ฃผ๋ฉด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

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

list.sort()
first = list[n-1]
second = list[n-2]

# ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š” ํšŸ์ˆ˜ ๊ณ„์‚ฐ
count = 0
count += m//(k+1) * k +( m %(k+1))

sum=0
sum += count *first
sum +=( m-count) *second

print(sum)
728x90