[백준 1789] 수들의 합

Minju Kwak·2022년 6월 19일
0

BOJ

목록 보기
6/22
post-thumbnail

문제

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

나의 해결방법
자연수 n이 만약에 200이라고 주어지면 서로 다른 x개의 자연수의 합이 n일때 x의 최대는 1부터 차례대로 더해갔을때이다.


1+2+3+...+19=190, 1+2+3+...+20=210 이므로
1+2+3+...+29=200이되므로 x의 값은 19가 된다.
즉, n값을 초과했을때 count값을 하나줄인다.


코드

#include<iostream>
using namespace std;

int main()
{
	long long n;
	cin >> n;
	long long sum = 0;
	int i = 1;
	int cnt = 0;
	while (1)
	{
		sum += i; //1부터 차례대로 더해감
		cnt++; //개수 증가
		i++; 
		if (sum > n) {  // 1부터 더한 합보다 입력한값을 초과했을때
			cnt--; //카운트값을 하나 줄임
			break; //while문을 빠져나감
		}
	}
	cout << cnt;
	return 0;

}

피드백
간단해보이지만 합이 입력값을 초과해줄때 cnt값을 하나 감소시키는 방법을 생각해내기 어려운것같다.

profile
그냥 나만의 노트

0개의 댓글