๐ŸŒฑ → ๐ŸŒณ

[Baekjoon] 17392. ์šฐ์šธํ•œ ๋ฐฉํ•™ - python ๋ณธ๋ฌธ

Algorithms

[Baekjoon] 17392. ์šฐ์šธํ•œ ๋ฐฉํ•™ - python

thals0 2023. 9. 29. 17:16
728x90

https://www.acmicpc.net/problem/17392

 

17392๋ฒˆ: ์šฐ์šธํ•œ ๋ฐฉํ•™

1์ผ, 5์ผ, 8์ผ์— ์•ฝ์†์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜ํ•˜๋ฉด, 4์ผ๊ณผ 10์ผ์— ๊ฐ๊ฐ 1๋งŒํผ์˜ ์šฐ์šธํ•จ์„ ๋Š๋ผ๊ฒŒ ๋˜์–ด, ์ด 2๋งŒํผ์˜ ์šฐ์šธํ•จ์„ ๋Š๋ผ๊ฒŒ ๋œ๋‹ค. ์ด๋ณด๋‹ค ๋œ ์šฐ์šธํ•จ์„ ๋Š๋ผ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

www.acmicpc.net

๋ฌธ์ œ ์ •๋ณด

๋ฌธ์ œ ์œ ํ˜• ๋‚œ์ด๋„ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ ํ•ด๊ฒฐ ์œ ๋ฌด
๊ทธ๋ฆฌ๋”” ์‹ค๋ฒ„1 1h o

์„ค๊ณ„ ๋ฐฉ๋ฒ•

  • sum : 0๊นŒ์ง€๋Š” ์šฐ์šธํ•˜์ง€ ์•Š์œผ๋‹ˆ๊นŒ arr์˜ ๋ชจ๋“  ๊ฐ’์— 1์„ ๋”ํ•ด์คŒ
  • left : m - sum # ์šฐ์šธํ•œ ๋‚ 
  • n+1 : ์šฐ์šธํ•œ ๋‚ ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์นธ
  • ์˜ˆ์‹œ(3 10 2 2 1)์˜ ๊ฒฝ์šฐ์—๋Š” ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์นธ์ด 4๊ฐœ์ธ๋ฐ ์šฐ์šธํ•œ ๋‚ ์ด 2์ด๋ฏ€๋กœ 1์˜ ์ œ๊ณฑ * 2 ์ด ์šฐ์šธ์˜ ์ดํ•ฉ์ด ๋œ๋‹ค
    • ๋งŒ์•ฝ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์นธ์ด 4๊ฐœ์ธ๋ฐ ์šฐ์šธํ•œ ๋‚ ์ด 5์ด์˜€์œผ๋ฉด
    • -1, -1, -1, -1 ๋จผ์ € ๋“ค์–ด๊ฐ€๊ณ  ๋‚˜๋จธ์ง€ ํ•œ๊ฐœ -2์˜ ์ œ๊ณฑ ๋”ํ•ด์ฃผ๋Š” ๊ฒƒ

์ฝ”๋“œ

n,m = map(int, input().split())
answer = 0
sum = 0
left = 0

arr = list(map(int, input().split()))
for i in arr:
    sum += i + 1 # 0๊นŒ์ง€๋Š” ์šฐ์šธํ•˜์ง€ ์•Š์œผ๋‹ˆ๊นŒ + 1

if sum < m:
    left = m - sum # ๋‚˜๋จธ์ง€ 
    div1 = left // (n + 1) # ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์นธ์˜ ์ˆ˜ 
    div2 = left % (n + 1) 
    for i in range(1, div1 + 1):
        answer += i ** 2 * (n + 1)
    answer += (div1 + 1) ** 2 * div2

print(answer)

์‹œ๊ฐ„ ๋ณต์žก๋„

O(n)

์–ด๋ ค์› ๋˜ ์ 

๋“ค์–ด๊ฐ€๋Š” ๊ณต๊ฐ„์— ๋Œ€ํ•ด ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ํž˜๋“ค์—ˆ์Œ

728x90