HyeLog

๋ฐฑ์ค€_12886_๋Œ๊ทธ๋ฃน ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€_12886_๋Œ๊ทธ๋ฃน

shj718 2022. 6. 24. 16:47

๐Ÿ™‹‍โ™€๏ธ ๋ฌธ์ œ

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

 

12886๋ฒˆ: ๋Œ ๊ทธ๋ฃน

์˜ค๋Š˜ ๊ฐ•ํ˜ธ๋Š” ๋Œ์„ ์ด์šฉํ•ด ์žฌ๋ฏธ์žˆ๋Š” ๊ฒŒ์ž„์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋จผ์ €, ๋Œ์€ ์„ธ ๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ์˜ ๊ทธ๋ฃน์—๋Š” ๋Œ์ด A, B, C๊ฐœ๊ฐ€ ์žˆ๋‹ค. ๊ฐ•ํ˜ธ๋Š” ๋ชจ๋“  ๊ทธ๋ฃน์— ์žˆ๋Š” ๋Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๋ ค

www.acmicpc.net

 

๐Ÿงฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜

DFS / BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‘˜๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ (์ด๋ฒˆ์—๋Š” DFS๋กœ ํ’€์–ด๋ดค๋‹ค.)

 

๐Ÿ’ก ์•„์ด๋””์–ด

์ •์ : (a,b,c) = ๋Œ์˜ ๊ฐœ์ˆ˜ ์ƒํƒœ

๊ฐ„์„ : (a,b,c) → (a´,b´,c´) = ํ•œ ๋‹จ๊ณ„์—์„œ ๋Œ์˜ ์ด๋™

์ „์ฒด ๋Œ์˜ ๊ฐœ์ˆ˜๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ด์šฉํ•ด์„œ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ธ๋‹ค. (dfs ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ 2๊ฐœ์˜ ๋Œ ๊ทธ๋ฃน๋งŒ ํ•„์š”)

 

๐Ÿ‘ฉ‍๐Ÿ’ป ์ฝ”๋“œ

#include <iostream>

using namespace std;

int sum;
bool visited[1501][1501];

void dfs(int a, int b) {
	if (visited[a][b]) return;
	visited[a][b] = true;
	int arr[3] = { a,b,sum - a - b };
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			if (arr[i] < arr[j]) {
				int changed[3] = { a,b,sum - a - b };
				changed[i] += arr[i];
				changed[j] -= arr[i];
				dfs(changed[i], changed[j]);
			}
		}
	}
}

int main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int a, b, c;
	cin >> a >> b >> c;
	sum = a + b + c;
	if (sum % 3 != 0) {
		cout << 0 << '\n';
		return 0;
	}
	dfs(a, b);
	if (visited[sum / 3][sum / 3]) {
		cout << 1 << '\n';
	}
	else {
		cout << 0 << '\n';
	}
	return 0;
}