[백준] 16561번_3의 배수 C++


수학적 규칙을 찾아 푸는 문제

정답제출코드


#include <iostream>

using namespace std;

int main()
{
    int a;
    cin >> a;

    if (a == 3 || a == 6)
    {
        cout << 0;
        return 0;
    }

    int num = 1;
    int stack = 2;
    // a = 9일때 1, a = 12일때 3, a = 15일 때 6...
    for (int i = 9; i < a; i = i + 3)
    {
        num += stack;
        stack++;
    }

    cout << num;

    return 0;
}

DP인줄 알았는데 수학적 규칙이 있었다.

수학적 규칙은 주석에 달아놓은대로 9일때 1, 12일 때 3, 15일 때 6.. 이런식으로

2 3 4 5 … 차이를 벌리면서 증가하는 규칙이 있다.

이를 찾아서 코딩을 해주면 해결. 그래서 티어도 낮은 문제였는데 삽질했다..


© 2022.07. by Wookey_Kim

Powered by Hydejack v7.5.2