언유상씨의 건전한 취미생활

[백준 알고리즘] 쉽게 푸는 문제(1292번) C++로 풀기 본문

건전한 취미생활 - 알고리즘

[백준 알고리즘] 쉽게 푸는 문제(1292번) C++로 풀기

언유상 2020. 5. 16. 21:30

문제 이름 : 쉽게 푸는 문제

문제 번호 : 1292

사용 언어 : C++

 

문제는 다음과 같다.

1000번째 숫자를 찾아보자.

n*(n+1) / 2 = 1000

n은 45 언저리가 된다.

 

이를 통해 1부터 45까지 각 숫자 만큼 그 숫자를 넣어주면서,

원하는 인덱스 범위 안에 들어갈 경우에는 그 값들을 모두 더해주면 된다.

 

소스 코드는 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <utility>
#include <cmath>
 
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int a, b;
    int sum = 0, cnt = 0;
    cin >> a >> b;
    for (int i = 1; i <= 45; i++) { // 들어갈 숫자
        for (int j = 1; j <= i; j++) { // 몇개 들어갈지 정함
            cnt++;
            if (cnt >= a && cnt <= b) { // a와 b에 맞는지 확인
                sum += i;
            }
            if (cnt == b) break// 탈출용 
        }
        if (cnt == b) break// 탈출용
    }
   cout << sum;
 
    return 0;
}
 
cs

 

제출해보면

Comments