본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 15489 : 파스칼 삼각형

반응형

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

 

15489번: 파스칼 삼각형

첫째 줄에 양의 정수 R, C, W가 공백을 한 칸씩 두고 차례로 주어진다. (단, 2 ≤ R+W ≤ 30, 2 ≤ C+W ≤ 30, 1 ≤ W ≤ 29, C ≤ R)

www.acmicpc.net

범위를 입력받고 그 범위만큼 탐색해 답을 구하는 brute force로 해결한 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

r, c, w, 파스칼의 삼각형을 저장할 2차원 배열 pas, 정답을 출력할 변수 ans를 선언 후 적절히 입력받습니다.

📔 풀이과정

30까지의 파스칼 삼각형 수를 구해 pas에 저장해줍니다.

📔 정답출력

입력받은 범위만큼 for loop를 수행해 ans에 더해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int r, c, w, pas[40][40], ans;

void makePascal(){
    for(int i = 1; i <= 31; i++) {
        for(int j = 1; j <= i; j++){
            if(i == 1 || j == 1) pas[i][j] = 1;
            else pas[i][j] = pas[i-1][j] + pas[i-1][j-1];
        }
    }
}

int main(){
    cin >> r >> c >> w;
    makePascal();

    for(int i = r; i < r + w; i++){
        for(int j = c; j <= c + i - r; j++) {
            ans += pas[i][j];
        }
    }

    cout << ans;    
}