[백준/BOJ]1789. 수들의 합 [Silver 5]

jychan99·2021년 8월 24일
0
post-thumbnail
  1. 수들의 합

문제출처 : https://www.acmicpc.net/problem/1789

문제 입력조건에 자연수 S(1 ≤ S ≤ 4,294,967,295)의 범위를 보면,
int 로는 안되고, 적어도 unsigned int 또는 long long의 자료형을 요구하는것을 볼 수 있다. 자료형의 범위는 구글링ㄱ
나는 unsigned 로는 안되길래 (다른건되는데 4294967295를 넣으면 오버플로우가 생기더라...)
맘편하게 longlong형으로 작성했다.
서로다른 숫자를 더하는것이므로 작은숫자부터 하나씩 더해가면서 더했을때 입력받은S를 초과하는 즉시 반복문을 빠져나오게 했다.(초과했으니 N은 1개 빼줘야지)
그리고 처음에 %ld로 입출력을 받았었는데 long타입일때 %ld이고 longlong타입일때는 %lld이더라 이건 처음알았음.
시도를 한 5번정도 한것 같은데 생각보다 쉬운문제였다.

code

#include <stdio.h>
int main()
{
	long long S, N = 0, i = 1, sum = 0;
	scanf("%lld", &S);
	while (1)
	{
		sum += i;
		N++;
		if (sum > S)
		{
			N--;
			break;
		}
		i++;
	}
	printf("%lld", N);
	return 0;
}
profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글