본문 바로가기
개발/백준 & 프로그래머스

[백준]1292번 쉽게 푸는 문제 c/c++

by 성장하고픈개발자 2022. 6. 25.
728x90
728x90

문제

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

"하지만 동호는 현재 더 어려운 문제를 푸느라 바쁘기에 우리가 동호를 도와주자" 이거 킹받네...

나의 해결방법
1, 2, 2, 3, 3, 3, 4, 4, 4, 4... 수열을 배열에 저장하여
a번째 원소부터 b번째 원소까지 더한 합을 출력해주는 방식을 사용하였다.

  • 이러한 형태의 수열을 저장하는 방법을 다뤄본적이 없어서 생소했다.
  • 2중 for문을 사용하여 하나는 원소역할을 하고, 나머지 하나는 그 원소를 반복하여 몇번 출력할 것인지를 나타낸다.

코드

#include<iostream>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    int n[1000];
    int cnt = 0;
    for (int i = 1; cnt<1000 ;i++) {
        for (int j = 0; j < i; j++) {
            n[cnt++] = i; //cnt는 for문과 상관없이 이 줄이 끝나면 1씩 증가
            if (cnt == 1000) //n배열을 다 채우면 break;
                break;
        }
    }
    int sum = 0;
    for (int i = a-1; i <= b-1; i++) { //a번째는 n[a-1]값이고, b번째는 n[b-1]값 이므로
        sum += n[i];
    }
    cout << sum << endl;
    return 0;
}

피드백
배열에 저장하고 출력하기만 하면 되는 문제였다.

728x90
728x90