상세 컨텐츠

본문 제목

< 백준 BaekJoon : 9184번 신나는 함수 실행> C++

C++/Baekjoon

by J2on 2024. 1. 27. 02:52

본문

<< 문제 >>

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

 

9184번: 신나는 함수 실행

입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.

www.acmicpc.net

 

동적계획 알고리즘에 대해 이해가 있다면 크게 어려운 문제는 아닙니다. 

 

이미 점화식 구성에 대한 힌트를 다 알려주고 있어서 조건만 잘 맞추시면 됩니다. 

 

 

 

<< 코드 >>

 

#include <iostream>
using namespace std;

int wTable[21][21][21];

void fillTable() {
	for (int i = 0; i < 21; i++) {
		for (int j = 0; j < 21; j++) {
			for (int k = 0; k < 21; k++) {
				if (i == 0 || j == 0 || k == 0) {
					wTable[i][j][k] = 1;
				}
				else if (i < j && j < k) {
					wTable[i][j][k] = wTable[i][j][k - 1] + wTable[i][j - 1][k - 1] - wTable[i][j - 1][k];
				}
				else {
					wTable[i][j][k] = wTable[i - 1][j][k] + wTable[i - 1][j - 1][k] + wTable[i - 1][j][k - 1] - wTable[i - 1][j - 1][k - 1];
				}
			}
		}
	}
}

int main() {

	fillTable();

	while (1) {
		int a, b, c;
		cin >> a >> b >> c;
		if (a == -1 && b == -1 && c == -1) {
			break;
		}
		cout << "w(" << a << ", " << b << ", " << c << ") = ";
		
		if (a <= 0 || b <= 0 || c <= 0) {
			a = 0;
			b = 0;
			c = 0;
		}
		else if (a > 20 || b > 20 || c > 20) {
			a = 20;
			b = 20;
			c = 20;
		}
		

		cout <<  wTable[a][b][c] << '\n';
	}
}

 

<< 깃헙 >>

https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%EB%B0%B1%EC%A4%80/Silver/9184.%E2%80%85%EC%8B%A0%EB%82%98%EB%8A%94%E2%80%85%ED%95%A8%EC%88%98%E2%80%85%EC%8B%A4%ED%96%89

 

관련글 더보기

댓글 영역