BackEnd King KY

백준 1789 본문

Algorithms

백준 1789

Django King, Lee 2022. 4. 3. 15:35
728x90

✔️문제

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

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

✔️풀이

n = int(input())

i=1
while True:
    if (i*(i+1))/2 == n: 
        print(i) 
        break
    
    if (i*(i+1))/2 > n: 
        print(i-1)
        break
    i+=1

1부터 차례 대로 더해서 n이 되나 체크합니다.

 

만약 n=210이라면 (x * (x+1))/2=210이 되어야 하며, x=20입니다.

이럴 경우 가능한 자연수 개수의 최대값은 20이 됩니다.

 

만약 n=211이라면 x=20일 떄는 210이고 x=21이라면 231이 돼서 값을 넘깁니다

그러면 211은 어떻게 표현해야 될까요?

 

190 + 21 이렇게 나타내야 합니다. 19까지의 합이 190이고 거기서 21을 더 해줘야 하므로 n을 넘어 갈 경우 넘어간 n의 값에서 -1을 해주면 되는 것입니다.

 

'Algorithms' 카테고리의 다른 글

백준 13305  (0) 2022.04.05
백준 10162  (0) 2022.04.02
백준 2217  (0) 2022.04.01
백준 1541  (0) 2022.03.30
백준 1026  (0) 2022.03.29