๋ฐฑ์ค€

๋ฐฑ์ค€ 2292 ๋ฒŒ์ง‘ - ํŒŒ์ด์ฌ

stoneeee 2022. 3. 26. 19:16

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

 

2292๋ฒˆ: ๋ฒŒ์ง‘

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์œก๊ฐํ˜•์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฒŒ์ง‘์ด ์žˆ๋‹ค. ๊ทธ๋ฆผ์—์„œ ๋ณด๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์ค‘์•™์˜ ๋ฐฉ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ด์›ƒํ•˜๋Š” ๋ฐฉ์— ๋Œ์•„๊ฐ€๋ฉด์„œ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฒˆํ˜ธ๋ฅผ ์ฃผ์†Œ๋กœ ๋งค๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์ˆซ์ž N์ด ์ฃผ์–ด์กŒ

www.acmicpc.net

 

 

์ฃผ์–ด์ง„ ์ˆซ์ž๊ฐ€ ๋ฒŒ์ง‘์˜ ์ค‘์•™(1)์—์„œ๋ถ€ํ„ฐ ๋ช‡ ๋ฒˆ์งธ ์ค„์— ๋‚˜ํƒ€๋‚˜๋Š” ์ง€๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์ˆ˜ํ•™๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทœ์น™ ๋ถ€ํ„ฐ ์ฐพ์•„๋ณด์•˜๋‹ค.

 

์ˆซ์ž(N) ๋‹ต ๊ทœ์น™(๋งˆ์ง€๋ง‰ ์ˆ˜์™€ ๊ด€๋ จ๋œ)
1 1 1 + 6 * 0
2 ~ 7 2 1 + 6 * 0 + 6 * 1
8 ~ 19 3 1 + 6 * 0 + 6 * 1
20 ~ 37 4 1 + 6 * 0 + 6 * 1 + 6 * 2
38 ~ 61 5 1 + 6 * 0 + 6 * 1 + 6 * 2 + 6 * 3
... ... ...

 

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” 1๊ฐœ, ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” 6๊ฐœ, ์„ธ ๋ฒˆ์งธ ์ค„์—๋Š” 12๊ฐœ, ๋„ค ๋ฒˆ์งธ ์ค„์—๋Š” 18๊ฐœ, ... ์˜ ์ˆซ์ž๊ฐ€ ๋ฐฐ์น˜๋˜๋Š” ๊ตฌ์กฐ์˜ ๋ฒŒ์ง‘์ด๋‹ค.

While ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ N์— 6 * a (a = 0๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€)๋ฅผ ๋นผ์ฃผ์—ˆ๊ณ , N์ด 1๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ๋” ์ž‘์•„์ง€๋ฉด breakํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.

 

a = 0
ans = 1
N = int(input())

while True:
    N = N - 6*a
    if N <= 1:
        print(ans)
        break
    else:
        a += 1
        ans += 1

 

๋‹น์—ฐํžˆ ๊ฑฐ๊พธ๋กœ 1๋ถ€ํ„ฐ ์ˆซ์ž๋ฅผ ๋”ํ•ด๊ฐ€๋ฉด์„œ ํ’€์–ด๋„ ๊ฐ™์€ ๋‹ต์ด ๋‚˜์˜จ๋‹ค.

 

ans = 1
n = 1
N = int(input())

while True:
    if n >= N:
        print(ans)
        break
    else:
        n += ans * 6
        ans += 1