[백준 | 실버5] 1789번: 수들의 합

파송송계란빡 ㅣ 2022. 3. 18. 19:48

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

입력

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

출력

첫째 줄에 자연수 N의 최댓값을 출력한다.

예제 입력 1 복사

200

예제 출력 1 복사

19

 

문제풀이

s : 서로다른 n개의 자연수의 합
자연수 n의 최대값은 얼마인가?

서로다른 n개의 합의 값은 200
서로다른 19개의 수를 합하여 만든 값은 200

최대한 많은 자연수를 사용해서 S를 만들기
만드는 숫자는 서로 다른수
1부터 작은 수부터 사용해야 최대 개수로 사용 가능
 
 
문제해결
N의 최댓값을 구하기 위해서는 1부터 N까지 더하되, 합계가 S와 같으면 그냥 출력, S보다 커지면 N-1출력
 
n = int(input())
sum = 0
count = 0
total = 0

while True :
    if n < total :
        break
    else :
        count += 1
        total += count
print(count-1)

 

 

Node.js 추가(2023.05.02)

let fs = require("fs");
let input = fs.readFileSync("./test.txt").toString().split("\n");
//let input = fs.readFileSync("/dev/stdin").toString().split("\n");

let s = Number(input[0]);
let sum = 0;
let count = 0;

while (sum <= s) {
    count += 1;
    sum += count;
}

console.log(count - 1);
[백준 | 실버5] 1789번: 수들의 합