반응형
문제
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
풀이
접근 방식 생각이 잘 안 나서 초반에 애를 먹은 문제입니다..
S의 크기가 4,294,967,295이므로 int의 최대 범위를 넘어갑니다. 그러므로 long long으로 선언하였습니다.
이어서 1씩 변화하는 값인 num과 N이 선언됩니다. sum은 숫자들의 합이 S를 넘나 넘지 않나 확인하는 변수입니다.
문제에서 N의 최댓값을 물어보았습니다. 최댓값이 되려면 조금이라도 더 많이 더하는 쪽이 유리하기 때문에 1부터 하나씩 더하기 시작합니다. 그리고 어느 시점에서 S보다 합(sum)이 더 커진다면 프로그램을 종료합니다.
#include <iostream>
using namespace std;
int main() {
long long S;
cin >> S;
int num = 1;
int N = 0;
long long sum = 0;
while (1) {
sum += num;
N++;
if (sum > S) {
N--;
break;
}
num++;
}
cout << N;
return 0;
}
반응형
'📊 알고리즘' 카테고리의 다른 글
[백준] 5988 - 홀수일까 작수일까 (0) | 2022.12.31 |
---|---|
[백준] 26766 - Serca (0) | 2022.12.30 |
[백준] 26545 - A+B (0) | 2022.12.28 |
[백준] 5341 - Pyramids (0) | 2022.12.27 |
[백준] 14337 - Helicopter (0) | 2022.12.26 |