백준 1789 : 수들의 합

3197 단어 cpp그리디cpp

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

1. 접근

  • 서로다른 n개의 자연수들의 개수가 많아야 하므로, 가장 작은수부터 더해야 갯수가 가장 많다
    => 1부터 하나씩 값을 빼준다
  • 10의 경우, 1+2+3+4 로 딱 맞아떨어지기때문에 4번째 반복문의 값을 얻을 수 있다
    cf. 9의 경우, 1+2+3까지 계산된 후, 4까지 더했을 때 정해진 값을 넘어서므로, 반복문의 값에서 -1을 해주어야 한다.

2. 나의 풀이

#include <iostream>
using namespace std;

int main() {
	long long s;
	cin >> s;

	long long sum = s;
	long long i = 0;
	for (i = 1; i < s; i++) {
		sum -= i;
		if (sum <=0)	break;
	}
	if (sum == 0)	cout << i << "\n";
	else cout << i - 1 << "\n";
	return 0;
}

좋은 웹페이지 즐겨찾기