728x90
https://www.acmicpc.net/problem/1789
#include <iostream>
using namespace std;
long long s, sum, n;
int main() {
cin>>s;
for(int i=1; 1; i++)
{
sum+=i;
if(sum>s)
{
n=i-1;
break;
}
}
cout<<n;
}
너무 간단하다 . . .
처음에 이 문제를 보고 이걸 어떻게 풀지..? 를 하아아아아아안참 고민했다..
그러나 규칙을 보니 생각보다 너어어어어어어무나 간단했다.
그리고 문제의 조건을 잘 읽지 않고 int를 사용해서 틀리기도 했다...
어쨌든 내가 푼 방법은 이러하다.
입출력 예시를 예로 들어보겠다.
반복문을 1부터 시작하여 하나씩 늘리며 그 수들의 누적합을 구해준다.
1 + 2 + 3 + 4 + 5 + ... + 16 + 17 + 18 + 19
=190이다.
여기에 20을 더하면 200이 넘는다.
200이 넘으면 반복문을 종료시키고, n에 i-1을 담아주어 n을 출력한다.
총 19번이 더해진 것이다.
왜 이렇게 했냐 하면...
결국 마지막에 더한 19를 29로 바꾸면 200이 된다.
즉, 마지막에 더하는 수(n개의 수 중에서 가장 큰 수)로 200을 맞춰주면 끝이다...
이 문제는 너무 야매스러워서 별로였다..
728x90
'알고리즘 > 문제' 카테고리의 다른 글
구름 문제은행 (배열 합치기) <C++> (0) | 2020.07.04 |
---|---|
[백준] 17615. 볼 모으기 <C++> (0) | 2020.06.20 |
[백준] 9094. 수학적 호기심 <C++> (0) | 2020.06.03 |
[백준] 9093. 단어 뒤집기 <C++> (0) | 2020.06.03 |
구름 문제은행 (n진법) <C++> (0) | 2020.05.30 |
댓글