본문 바로가기
algorithm

분배법칙(Distributive Property)

by WhoamixZerOne 2025. 2. 19.

알고리즘 문제를 풀다가 분배법칙에 관한 수학적인 문제가 나와 기억하기 위해 작성한다.

분배법칙(Distributive Property)

집합 S와 S에 대해 닫혀있는 두 이항 연산 *, +가 정의되어 있을 때, S의 임의의 원소 a, b, c에 대해

$ a * (b + c)  = (a * b) + (a * c) $ 가 성립하면 (+에 대한 *의) 좌분배법칙이,

$ (b + c) * a = (b * a) + (c * a) $ 가 성립하면 (+에 대한 *의) 우분배법칙이 성립한다고 하며,

위 두 가지가 모두 성립할 경우 집합 S에서 연산 *은 연산 +에 대해 분배법칙(+에 대한 *의 (양쪽) 분배법칙)이 성립한다고 한다.

 

두 항을 곱할 때 각 항들을 나누어 곱한 후 더하는 방식이다.
즉, "(3 + 2) x 4"가 있을 때 "5 x 4 = 20"되는 것과 "3 x 4 + 2 x 4 = 20(분배법칙)"으로 같다는 것이다.

$$ (A + B)(C + D) = A \cdot C + A \cdot D + B \cdot C + B \cdot D $$

 

그럼 위 식으로 간단한 예제를 확인해 보겠습니다.

백준 15964 이상한 기호(구현 C++)

백준 - 15964 이상한 기호

 

문제 내용은 다음과 같다.

"연산자의 기호는 @으로, A@B = (A+B)×(A-B)으로 정의 내리기로 했다. A, B가 주어지면 A@B를 계산하는 프로그램을 만들어주자!"

문제 자체가 아주 간단하기 때문에 정의한 식을 그대로 사용해도 통과하지만 분배법칙으로 더 간단하게 구할 수 있다.

정의한 식을 분배법칙으로 구하면 다음과 같다.

$$ (A + B) * (A - B) $$

$$ = A \cdot A - A \cdot B + B \cdot A - B \cdot B $$

$$ = A^2 - AB + AB - B^2 $$

$$ = A^2 - B^2 $$

#include <bits/stdc++.h>
using namespace std;
#define FAST_IO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
typedef long long ll;
ll a, b;
int main(){
    FAST_IO;
    cin >> a >> b;
    cout << a*a-b*b;
    return 0;
}

 

 

 

🔗 Reference

'algorithm' 카테고리의 다른 글

지수법칙 & 모듈러 연산  (0) 2025.02.13
누적합(Prefix Sum)  (0) 2025.01.19
DFS (Depth-First Search)  (0) 2023.06.25
BFS (Breadth-First Search)  (1) 2023.06.17
큐(Queue)  (0) 2023.05.02