Baekjoon Online Judge ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด(Java)
BOJ 10430. ๋๋จธ์ง
(์ถ์ฒ : ๋ฌธ์ ์ ์ ์๊ถ์ BOJ์ ์์ต๋๋ค. )
๐๏ธ ๋ฌธ์
<๋ฌธ์ >
(A+B)%C๋ ((A%C) + (B%C))%C ์ ๊ฐ์๊น?
(A×B)%C๋ ((A%C) × (B%C))%C ์ ๊ฐ์๊น?
์ธ ์ A, B, C๊ฐ ์ฃผ์ด์ก์ ๋, ์์ ๋ค ๊ฐ์ง ๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
<์
๋ ฅ>
์ฒซ์งธ ์ค์ A, B, C๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. (2 ≤ A, B, C ≤ 10000)
<์ถ๋ ฅ>
์ฒซ์งธ ์ค์ (A+B)%C,
๋์งธ ์ค์ ((A%C) + (B%C))%C,
์
์งธ ์ค์ (A×B)%C, ๋ท์งธ ์ค์ ((A%C) × (B%C))%C๋ฅผ ์ถ๋ ฅํ๋ค.
ํ ์คํธ ์ผ์ด์ค๋ BOJ์ ํด๋น ๋ฌธ์ ๋ฅผ ํ์ธ ๋ฐ๋๋๋ค.
๐ ๋์ ํ์ด
package AlgorithmBase1;
import java.io.IOException;
import java.util.Scanner;
public class P10430 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int C = sc.nextInt();
System.out.println((A+B)%C);
System.out.println(((A%C) + (B%C))%C);
System.out.println((A*B)%C);
System.out.println(((A%C) * (B%C))%C);
}
}
๐ฌ ์ง์ด๊ฐ๊ธฐ
ํด๋น ๋ฌธ์ ๋ ๋ชจ๋๋ฌ ์ฐ์ฐ
์ ๊ธฐ๋ณธ ์ฑ์ง์ ํ์ธํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
๋ชจ๋๋ฌ ์ฐ์ฐ์ ๋ํด ์ดํด๋ณด์.
๋ชจ๋๋ฌ ์ฐ์ฐ(Modular arithmetic)
๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ด๋ค ํ ์ซ์๋ฅผ ๋ค๋ฅธ ์ซ์๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ์ฐ์ฐ์ด๋ค. ๋ ์ ์ A, B์ ๋ํด์
A๋ฅผ B๋ก ๋๋์ด ๋๋จธ์ง๊ฐ C๊ฐ ๋์๋ค๋ฉด A mod B = C
๋๋ A % B = C
๋ผ๊ณ ํํํ ์ ์๋ค.
โถ๏ธ ๋ชจ๋๋ฌ ํฉ๋(Modular congruent)
๋ ์ $a$, $b$๊ฐ mod
$n$์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค๋ฉด, _๋ชจ๋๋ฌ ํฉ๋๊ด๊ณ(congruent modulo n)_๋ผ๊ณ ํ๋ค.
- $a$ $mod$ $n = b$ $mod$ $n$
- $a \equiv b$ $mod$ $n$
ํฉ๋ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ์์๋ด๋ ๋ฐฉ๋ฒmod
$n$์ ๋ํด, $a-b = kn$ ์ผ๋ $a$์ $b$๋ ํฉ๋(Congruent)๊ด๊ณ์ด๋ค. (k๋ ์ ์)
์) 73๊ณผ 4๊ฐ mod
23์ ๋ํด ํฉ๋๊ด๊ณ์ด๋ฉด, $73-4 = 69 = (23 * 3)$์ ๋ง์กฑํ๋ค.
โถ๏ธ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํน์ง
๋ชจ๋๋ฌ ์ฐ์ฐ์ ๋ง์
, ๋บ์
, ๊ณฑ์
์ฐ์ฐ์ ๋ํ ์๋์ ๊ฐ์ ํน์ง์ ๊ฐ๋๋ค.
- $(a$ $mod$ $n + b$ $mod$ $n)$ $mod$ $n = (a + b)$ $mod$ $n$
- $(a$ $mod$ $n - b$ $mod$ $n)$ $mod$ $n = (a - b)$ $mod$ $n$
- $(a$ $mod$ $n * b$ $mod$ $n)$ $mod$ $n = (a * b)$ $mod$ $n$
๊ณฑ์ ์ฐ์ฐ์ ํน์ง์ ์ด์ฉํ์ฌ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋ํ ๋๋จธ์ง ์ฐ์ฐ์๋ ํ์ฉํ ์ ์๋ค.
โถ๏ธ ๋ชจ๋๋ฌ ๋๋์ (Modular Division)
๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ ์์ ๋ํ ์ฐ์ฐ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ์๊ฐ ์๋ ๊ฐ์ ๋ํ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ด๋ป๊ฒ ์ํํ ์ ์์๊น?
$5/3$ $mod$ $11$์ ๊ฐ์ ์์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ํํ๋ค๊ณ ๊ฐ์ ํ์.
์ด๋ฌํ ๋ถ์ ํํ์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ํด์ ์ญ์์ ๊ตฌํ์ฌ ํด๊ฒฐํ ์ ์๋ค.
(์ญ์์ด๋ ๋ ์์๋ฅผ ์ฐ์ฐํ ๊ฒฐ๊ณผ๊ฐ ํญ๋ฑ์์ผ ๋, ํ ํธ์ ๋ํ์ฌ ๋ค๋ฅธ ํธ์ ์ด๋ฅด๋ ๋ง์ด๋ค.)
๋ถ๋ชจ์ธ $3$์ ์ญ์ $t$ ๋ฅผ ๊ตฌํด๋ณด์.
$3 * t$ $mod$ $11 = 1$
$3 * 4$ $mod$ $11 = 1$
์ด๋ฅผ ๋ง์กฑํ๋ $t$์ ๊ฐ์ $4$์ด๋ค. ๋ฐ๋ผ์ $3$์ ์ญ์ $4$๋ฅผ ๊ตฌํ ์ ์๋ค.
์ด์ ๊ธฐ์กด ์์ ์ญ์์ ์ด์ฉํ์ฌ ๋ณํํ๋ฉด ์๋์ ๊ฐ๋ค.
$5/3$ $mod$ $11 = 5 * 4$ $mod$ $11 = 9$์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
๐ ๋ชจ๋๋ฌ ๋๋์ ์ง์ด์๊ธฐ
์ฌ์ค $5/3$ $mod$ $11$ ๊ณผ ๊ฐ์ ์์ ๋ณด์์ ๋, $5/3$์ ๊ทผ์ฌ๊ฐ์ด ๋์์ผ ํ์ง ์๋ ํ๋ ์๋ฌธ์ด ๋ค์๋ค.
$5/3$์ ์ฝ 1.6666666667์ด๊ณ , ๊ณ์ฐ๊ธฐ์ $(5/3)$ % $11$์ ํด๋ณด๋ฉด ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์์ธ์ _๊ณ์ฐ ๋ฐฉ์๊ณผ ๋ชฉ์ ์ฑ_์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ ์ฐจ์ด์ด๋ค. ๋จ์ ๊ณ์ฐ๊ธฐ์์์ ๋๋์
์ ์ค์
์ฐ์ฐ์ด๋ฏ๋ก ์์์
์ดํ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ค. ๋ฐ๋ผ์ ๊ณ์ฐ๊ธฐ์์๋ ์์์ ์ดํ๊ฐ ํฌํจ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋๋ค.
๋ชจ๋๋ก ์ฐ์ฐ์ ์ ์
์ ์ฃผ๊ธฐ์ฑ์ ๋ํ๋ด๊ฑฐ๋ ์ํธํ ๋ฑ์ ํ์ฉ๋๋ค.
๋ชจ๋๋ฌ์ ๊ณ์ฐ๊ธฐ์์์ ๋๋์
์ ๋ค๋ฅธ ๋ชฉ์ ๊ณผ ์ฐ์ฐ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ์๋ก ๋ค๋ฅผ ์ ์๋ค.