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

[์•Œ๊ณ ๋ฆฌ์ฆ˜] #02 ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜-ํฐ ์ˆ˜์˜ ๋ฒ•์น™ ๋ฌธ์ œ

by Soo-minJeon 2022. 5. 3.

๐Ÿ›  ํฐ ์ˆ˜์˜ ๋ฒ•์น™ ๋ฌธ์ œ

๐Ÿ”ง  ๋ฌธ์ œ 

 ๋‹ค์–‘ํ•œ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ, ์ฃผ์–ด์ง„ ์ˆ˜๋“ค์„ M๋ฒˆ ๋”ํ•˜์—ฌ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ•์น™์„ ํฐ ์ˆ˜์˜ ๋ฒ•์น™์ด๋ผ๊ณ  ํ•˜์ž. 

๋‹จ, ๋ฐฐ์—ด์˜ ํŠน์ •ํ•œ ์ธ๋ฑ์Šค(๋ฒˆํ˜ธ)์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๊ฐ€ ์—ฐ์†ํ•ด์„œ K๋ฒˆ์„ ์ดˆ๊ณผํ•˜์—ฌ ๋”ํ•ด์งˆ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด ์ด ๋ฒ•์น™์˜ ํŠน์ง•์ด๋‹ค.

(์ธ๋ฑ์Šค๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ์ˆ˜๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.)

 

โœ… ์ž…๋ ฅ ์กฐ๊ฑด

1. ์ฒซ์งธ ์ค„์— N(2 <= N <= 1,000), M(1 <= M <= 10,000), K(1 <= L <= 10,000)์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ๊ฐ ์ž์—ฐ์ˆ˜๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

2. ๋‘˜์งธ ์ค„์— N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์ž์—ฐ์ˆ˜๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ๋‹จ, ๊ฐ๊ฐ์˜ ์ž์—ฐ์ˆ˜๋Š” 1์ด์ƒ 10,000 ์ดํ•˜์˜ ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค.

3. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” K๋Š” ํ•ญ์ƒ M๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

 

โœ… ์ถœ๋ ฅ ์กฐ๊ฑด

1. ์ฒซ์งธ ์ค„์— ํฐ ์ˆ˜์˜ ๋ฒ•์น™์— ๋”ฐ๋ผ ๋”ํ•ด์ง„ ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

โœ… ์ž…๋ ฅ ์˜ˆ์‹œ โœ… ์ถœ๋ ฅ ์˜ˆ์‹œ
5 8 3
2 4 5 4 6
46

 


๐Ÿ”ง ์•„์ด๋””์–ด

1) ์ž…๋ ฅ๊ฐ’

- ์šฐ์„  N๊ฐœ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ๋‘˜์งธ์ค„์— ์ž…๋ ฅ๋ฐ›์€ ์ž์—ฐ์ˆ˜๋“ค์„ ์ €์žฅํ•œ๋‹ค.

 

- ์ˆ˜๊ฐ€ ๊ฐ™์•„๋„ ์ธ๋ฑ์Šค๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ์ˆ˜๋กœ ์—ฌ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์—, ๋‘˜์งธ์ค„์— ์ž…๋ ฅ๋ฐ›๋Š” ์ˆ˜๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ์ค‘๋ณต๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ

K๊ฐ’์— ์ƒ๊ด€์—†์ด ์ตœ๋Œ€๊ฐ’ * M ์„ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. (์•„๋ž˜์˜ ์˜ˆ ์ฐธ๊ณ  - 6+6+6+6+6+6+6+6)

โœ… ์ž…๋ ฅ ์˜ˆ์‹œ โœ… ์ถœ๋ ฅ ์˜ˆ์‹œ
5 8 3
2 4 5 6 6
48

 

- ์ตœ๋Œ€๊ฐ’์ด ๋„์ถœ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘˜์งธ์ค„์— ์ž…๋ ฅ๋ฐ›๋Š” ์ˆ˜๋“ค ์ค‘ (์ตœ๋Œ€๊ฐ’ * K) + ๊ทธ๋‹ค์Œ ์ตœ๋Œ€๊ฐ’ + (์ตœ๋Œ€๊ฐ’ * M-k-1)์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ž…๋ ฅ ์˜ˆ์‹œ โœ… ์ถœ๋ ฅ ์˜ˆ์‹œ
5 8 3
2 4 5 4 6
46

์ด ์ƒํ™ฉ์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž๋ฉด N = 5 / M = 8 / K = 3์ด๋‹ค. 

์ฆ‰, N๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๋‘˜์งธ์ค„์— ์ž…๋ ฅ๋˜๊ณ  ํ•œ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๋Š” ์—ฐ์†์œผ๋กœ ์ตœ๋Œ€ 3๋ฒˆ๊นŒ์ง€ ๋”ํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด 8๋ฒˆ์˜ ๋ง์…ˆ์„ ํ•ด์•ผ ํ•œ๋‹ค.

 

๊ฒฐ๊ณผ๋กœ ์ตœ๋Œ€๊ฐ’์„ ๋‚ด์•ผ ํ•˜๋ฏ€๋กœ ์ตœ๋Œ€๊ฐ’์„ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋”ํ•ด์•ผ ํ•œ๋‹ค.

(6+6+6)=> ์ด 5๋ฒˆ์˜ ๋ง์…ˆ์ด ๋‚จ์•˜๊ณ  ํ•œ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๋Š” ์—ฐ์†์œผ๋กœ 3๋ฒˆ๊นŒ์ง€ ๋”ํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ทธ ๋‹ค์Œ์œผ๋กœ ํฐ ์ˆ˜์ธ 5๋ฅผ ํ•œ ๋ฒˆ ๋”ํ•ด์ค€๋‹ค.

(6+6+6)+5 => ์ด 4๋ฒˆ์˜ ๋ง์…ˆ์ด ๋‚จ์•˜๊ณ  ์ค‘๊ฐ„์— 5๋ฅผ ํ•œ๋ฒˆ ๋”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ ๋‹ค์‹œ ์ตœ๋Œ€๊ฐ’์ธ 6์„ ๋”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. 

(6+6+6)+5+(6+6+6) => ์ด 1๋ฒˆ์˜ ๋ง์…ˆ์ด ๋‚จ์•˜๊ณ  6์„ 3๋ฒˆ ๋”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ 5๋ฅผ ๋”ํ•ด ์—ฐ์†์„ ๋Š์–ด์•ผ ํ•œ๋‹ค.

(6+6+6)+5+(6+6+6)+5 => ์ด 0๋ฒˆ์˜ ๋ง์…ˆ์ด ๋‚จ์•„ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ 46์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ณต์‹ํ™” ํ•ด๋ณด์ž. ์œ„์˜ ์˜ˆ๋ฅผ ๋ณด๋ฉด (6+6+6)+5 ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

M = 8์ผ ๋•Œ, ์ตœ๋Œ€๊ฐ’์ธ 6์ด ์–ผ๋งŒํผ ๋”ํ•ด์ง€๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด์ž. 

๋ฐ˜๋ณต๋˜๋Š” (6+6+6)+5๋ฅผ ํ•˜๋‚˜์˜ ๋ฉ์–ด๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด 8 ์•ˆ์—๋Š” 2๊ฐœ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ํ•œ ๋ฉ์–ด๋ฆฌ ์•ˆ์— 6์ด 3๊ฐœ์”ฉ ๋“ค์–ด์žˆ์œผ๋‹ˆ 

์ตœ๋Œ€๊ฐ’์ธ 6์€ ์ด 6๋ฒˆ ๋”ํ•ด์ง„๋‹ค. ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด M // (K+1) * K๋ฒˆ ๋”ํ•ด์ง„๋‹ค.

 

๋งŒ์•ฝ M = 9๋ผ๋ฉด? 2๊ฐœ์˜ ๋ฉ์–ด๋ฆฌ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ ๋„ 1์ด ๋‚จ๋Š”๋‹ค.

์ด ์ƒํ™ฉ์€ ์ดˆ๋“ฑํ•™์ƒ๋•Œ ๋ฐฐ์šด ์—ฐ์‚ฐ์ธ '๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ'์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

9 / 4 = ๋ชซ์ด 2์ด๊ณ  ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์ ˆ๋Œ€ 4์ด์ƒ์ผ ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜๋จธ์ง€๊ฐ€ ์–ด๋–ค ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋“  ๋ฉ์–ด๋ฆฌ๊ฐ€ 2๋ฒˆ ๋ฐ˜๋ณต๋œ ํ›„์ด๋ฏ€๋กœ ์ตœ๋Œ€๊ฐ’์ธ 6์ด ๋”ํ•ด์งˆ ์ˆ˜์žˆ๋Š” ์ƒํ™ฉ์ด ๋œ๋‹ค.

[(6+6+6)+5] + [(6+6+6)+5] + ?

 

๋”ฐ๋ผ์„œ ์ผ๋ฐ˜ํ™”์‹œํ‚ค๋ฉด, 
{M // (K+1) * K} + {M % (K+1)}๊ฐ€ ๋œ๋‹ค.

 

๊ทธ๋Ÿผ ๋‘๋ฒˆ์งธ๋กœ ํฐ ๊ฐ’์ธ 5๋Š” ์–ผ๋งŒํผ ๋”ํ•ด์ง€๋Š”์ง€ ์•Œ์•„๋ณด์ž.

M = 8์ผ๋•Œ, 2๋ฒˆ

M = 9์ผ๋•Œ, 2๋ฒˆ

M = 10์ผ๋•Œ, 2๋ฒˆ

M = 11์ผ๋•Œ, 2๋ฒˆ

M = 12์ผ๋•Œ, 3๋ฒˆ

๋”ฐ๋ผ์„œ ์ผ๋ฐ˜ํ™”์‹œํ‚ค๋ฉด M // (K+1)์ด ๋œ๋‹ค.

 

์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž.


๐Ÿ”ง ์ฝ”๋“œ ์ž‘์„ฑ

# split์œผ๋กœ ๋ถ„๋ฆฌ๋œ N, M, K๊ฐ€ ์†ํ•œ ๋ฐฐ์—ด์„ mapํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด int๋กœ ํ˜•๋ณ€ํ™˜ํ•œ ํ›„ ๊ฐ๊ฐ์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
N, M, K = map(int, input().split())

# list()๋ฅผ ํ†ตํ•ด ๋‘˜์งธ์ค„์— ์ž…๋ ฅ๋ฐ›๋Š” ์ˆ˜๋“ค์„ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค.
InputArray = list(map(int, input().split()))

# ์ตœ๋Œ€๊ฐ’๊ณผ ๊ทธ ๋‹ค์Œ์œผ๋กœ ํฐ ๊ฐ’์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋‚ด์žฅํ•จ์ˆ˜ .sort()๋ฅผ ์ด์šฉํ•œ๋‹ค
# ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์œ„ํ•ด์„œ๋Š” reverse = True ๋ฅผ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•จ. ๋””ํดํŠธ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ
InputArray.sort(reverse=True) # .sort()ํ•จ์ˆ˜๋Š” ๋ฆฌํ„ด๊ฐ’์ด ์—†์Œ !!์ฃผ์˜!!

result = 0 # ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•  ๋ณ€์ˆ˜์ƒ์„ฑ

if(InputArray[0] == InputArray[1]): # ๋งŒ์•ฝ ์ตœ๋Œ€๊ฐ’๊ณผ ๊ทธ ๋‹ค์Œ ํฐ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด
    result = InputArray[0] * M
else:
    max_count = int(M / (K+1)) * K + M % (K+1) # ์ตœ๋Œ€๊ฐ’์ด ๋”ํ•ด์งˆ ํšŸ์ˆ˜
    second_count = int(M / (K+1)) # ๋‘๋ฒˆ์งธ ํฐ ๊ฐ’์ด ๋”ํ•ด์งˆ ํšŸ์ˆ˜
    result = max_count * InputArray[0] + second_count * InputArray[1]

print(result)