We will find a way, we always have.

-interstellar

Problem Solving/๋ฐฑ์ค€

[๋ฐฑ์ค€] 1789๋ฒˆ: ์ˆ˜๋“ค์˜ ํ•ฉ - ํŒŒ์ด์ฌ

Redddy 2022. 4. 27. 20:28

๐Ÿ“Ž๋ฌธ์ œ๋งํฌ: https://www.acmicpc.net/problem/1789

 

1789๋ฒˆ: ์ˆ˜๋“ค์˜ ํ•ฉ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ S(1 ≤ S ≤ 4,294,967,295)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

๐Ÿ’ผ์„œ๋ก 

์š”์ฆ˜ ์—ด์‹ฌํžˆ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒŒ๊ณ  ์žˆ๋‹ค. ๐Ÿคธ‍โ™‚๏ธ
๊ทธ๋ฆฌ๋”” ๋ฐฉ๋ฒ•์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋ญ”๊ฐ€ ๋ฌ˜ํ•œ ์พŒ๊ฐ์ด ์žˆ๋‹ค.

 

๐Ÿงฉ๋ฌธ์ œ ํ•ด์„

์„œ๋กœ ๋‹ค๋ฅธ ์ž์—ฐ์ˆ˜ N์„ ๋”ํ•œ ๊ฐ’์ธ S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ N์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ!

 

๐Ÿ“˜ํ’€์ด

1. N์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ตœ๋Œ€๋กœ ๋งŒ๋“œ๋ ค๋ฉด N์€ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด N์˜ ๊ฐ’์„ +1 ์”ฉ ์ฆ๊ฐ€ํ•˜์—ฌ S๋ฅผ ๋งŒ๋“ค๋ฉด ๊ทธ๊ฒƒ์ด N์„ ์ตœ๋Œ€๊ฐฏ์ˆ˜๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž!

200์€ 1+2+3+4+...+18+29 ์ด 19๊ฐœ์ด๋‹ค. 

1๋ถ€ํ„ฐ 18๊นŒ์ง€๋Š” N์ด ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜์˜€์ง€๋งŒ ๋งˆ์ง€๋ง‰ ๊ฐ’์€ 1์ฆ๊ฐ€ํ•œ ๊ฐ’์ด ์•„๋‹ˆ์—ˆ๋‹ค. ์ด ๋งˆ์ง€๋ง‰ ์ˆ˜ ํŒ๋‹จ์€ "์„œ๋กœ ๋‹ค๋ฅธ ์ž์—ฐ์ˆ˜ N"์ด๋ผ๋Š” ๋ฌธ์žฅ์— ํ‚ค๊ฐ€ ์žˆ๋‹ค.

1๋ถ€ํ„ฐ 18๊นŒ์ง€ ๋”ํ•œ ๊ฐ’์€ 171์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๊ทธ๋ƒฅ ์ง„ํ–‰ํ•˜๋˜๋Œ€๋กœ 19๋ฅผ ๋”ํ•ด๋ฒ„๋ฆฌ๋ฉด 190์ด ๋œ๋‹ค. 190์ด 200์ด ๋˜๋ ค๋ฉด +10์ด ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ 10์€ ์ด๋ฏธ ์•ž์„œ ์‚ฌ์šฉํ•˜์˜€๊ธฐ์— ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆœ ์—†๋‹ค. ์ฆ‰ ๊ทธ๋ž˜์„œ 19๋ฅผ ๋”ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋‚จ์€ ๊ฐ’๋“ค์„ ๋”ํ•˜์˜€๋‹ค. 

200์—์„œ 1๋ถ€ํ„ฐ ์ฐจ๊ฐํ•œ ๊ฐ’:

n       n      i

200 = 200 - 0

199 = 200 - 1

197 = 199 - 2

194 = 197 - 3

190 = 194 - 4

.

.

.

29 = 47 - 18

10 = 29 - 19

-10 = 10 - 20(?)

๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„์„ ์ž˜ ์‚ดํŽด๋ณด๋ฉด i๊ฐ€ n๋ณด๋‹ค ํด๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค!

์ฆ‰ i๊ฐ€ n๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„๋•Œ๊นŒ์ง€ n = n-i๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋œ๋‹ค!

 

 

๐Ÿ’ป์ฝ”๋“œ

n = int(input())
i = 0
cnt = 0
while True:
    if n > i: # n์ด i๋ณด๋‹ค ํฌ๋ฉด n์— i๋ฅผ ์ฐจ๊ฐ
        i += 1
        n = n-i
        cnt += 1
    else:
        print(cnt)
        break