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

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

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