※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 5557번 문제인 1학년이다.
문제는 아래 링크를 확인하자.

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

 

5557번: 1학년

상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀

www.acmicpc.net

2차원 배열을 만들어, 이전 숫자까지 계산을 마쳤을 때 0~20의 숫자들이 각각 만들어질 수 있는 경우의 수를 관리해주자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long long ll;

ll arr[100][21];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N; cin >> N;
	int x; cin >> x;
	arr[1][x] = 1;
	for (int i = 2; i < N; i++) {
		cin >> x;
		for (int j = 0; j <= 20; j++) {
			if (0 <= j - x) arr[i][j - x] += arr[i - 1][j];
			if (j + x <= 20) arr[i][j + x] += arr[i - 1][j];
		}
	}

	cin >> x;
	cout << arr[N - 1][x];
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 16434 // C++] 드래곤 앤 던전  (0) 2021.10.05
[BOJ 2565 // C++] 전깃줄  (0) 2021.10.04
[BOJ 3835 // C++] Alphabet Soup  (0) 2021.10.02
[BOJ 4811 // C++] 알약  (0) 2021.10.01
[BOJ 15961 // C++] 회전 초밥  (0) 2021.09.30

+ Recent posts