์๋ ํ์ธ์! ๐ ์ค๋์ ๋ฐฑ์ค ์จ๋ผ์ธ ์ ์ง์ ๋ฌธ์ ์ค ํ๋์ธ 14252๋ฒ ๋ฌธ์ ๋ฅผ ํจ๊ป ํ์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฃผ์ด์ง ์ซ์๋ค ์ฌ์ด์์ ๊ณต์ฝ์๊ฐ 1์ธ ์ซ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ๋จผ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ๊ทผ๋ฒ์ ์ดํด๋ณธ ํ, ์ ๋ต ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฌธ์ ์ค๋ช
๋ฌธ์ ๋ ์ฃผ์ด์ง ์ซ์๋ค ์ฌ์ด์ ๊ณต์ฝ์๊ฐ 1์ธ ์ซ์๋ฅผ ์ฐพ์์ผ ํ๋๋ฐ, ๋ ์ ์ฌ์ด์ ์ซ์๋ฅผ ์ถ๊ฐํ์ฌ ์ธ์ ํ ๋ ์์ ๊ณต์ฝ์๋ฅผ 1๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํฉ๋๋ค.
2. ์ ๊ทผ๋ฒ
1. ์ต๋๊ณต์ฝ์ ๊ตฌํ๊ธฐ:
• ๋ ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
• ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ๋ ์๋ฅผ ๋๋์์ ๋ ๋๋จธ์ง๊ฐ 0์ด ๋ ๋๊น์ง ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
2. ์ธ์ ํ ๋ ์์ ๊ณต์ฝ์ ํ์ธ:
• ์ฃผ์ด์ง ์ซ์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํฉ๋๋ค.
• ์ ๋ ฌ๋ ๋ฆฌ์คํธ์์ ์ธ์ ํ ๋ ์์ ์ต๋๊ณต์ฝ์๋ฅผ ํ์ธํฉ๋๋ค.
• ๋ง์ฝ ์ต๋๊ณต์ฝ์๊ฐ 1์ด ์๋๋ฉด, ๊ทธ ์ฌ์ด์ ์ซ์๋ฅผ ์ถ๊ฐํ์ฌ ์ต๋๊ณต์ฝ์๊ฐ 1์ด ๋๋๋ก ํฉ๋๋ค.
3. ์ซ์ ์ถ๊ฐํ๊ธฐ:
• ์ธ์ ํ ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ 1์ด ์๋ ๊ฒฝ์ฐ, ๊ทธ ์ฌ์ด์ ์๋ ์ซ์๋ฅผ ํ์ธํ์ฌ ์ต๋๊ณต์ฝ์๊ฐ 1์ธ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ต๋๋ค.
• ๋ง์ฝ ์ฐพ์ง ๋ชปํ๋ฉด ๋ ๊ฐ์ ์ซ์๋ฅผ ์ถ๊ฐํ์ฌ ์ต๋๊ณต์ฝ์๊ฐ 1์ด ๋๋๋ก ํฉ๋๋ค.
์ด์ , ์ด๋ฌํ ์ ๊ทผ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ๋ต ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
** ๋๊ฐ์ ์ซ์๋ฅผ ์ถ๊ฐํ๋ ์ด์ ๋? **
๋ค ๊ฐ์ ์ซ์ ์ค ์ ์ด๋ ๋ ๊ฐ๋ ์๋ก ์์ธ ๋ ์๋ฅผ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ด์ฉํ ์ต๋๊ณต์ฝ์ ๊ตฌํ๊ธฐ์์, ๋ ์๊ฐ ์๋ก ์์ผ ๋ ๊ทธ ์ต๋๊ณต์ฝ์๊ฐ 1์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, 6๊ณผ 10 ์ฌ์ด์ 7๊ณผ 9๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ฉด, 6, 7, 9, 10์ ๋ชจ๋ ์ธ์ ํ ๋ ์ ์ฌ์ด์ ์ต๋๊ณต์ฝ์๊ฐ 1์ด ๋ฉ๋๋ค:
• gcd(6, 7) = 1
• gcd(7, 9) = 1
• gcd(9, 10) = 1
์ด๋ค ๋ ์ a ์ b ๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์ฌ์ด์ ๋ ์ x ์ y ๋ฅผ ์ถ๊ฐํ ๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๊ฒ ์ ํํ ์ ์์ต๋๋ค:
• gcd(a, x) = 1
• gcd(x, y) = 1
• gcd(y, b) = 1
์ด๋ก ์ ์ผ๋ก, ๋ ๊ฐ์ ์๋ฅผ ์ ํํ ๋๋ง๋ค ์ ์ ํ ์๋ก ์์ธ ์๋ฅผ ์ ํํ ์ ์๋ ์ด์ ๋ ๋ ์ ์ฌ์ด์ ์ถฉ๋ถํ ๊ณต๊ฐ์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฅผ ๋ค์ด, a ์ b ์ฌ์ด์ ๋ชจ๋ ์๋ฅผ ๊ฒํ ํ๋ฉด, ์ ์ด๋ ๋ ๊ฐ์ ์๋ก ์์ธ ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ค์ ๋ก ์ด ์ ๊ทผ๋ฒ์ ์ํ์ ์ฑ์ง์ ํ์ฉํ๋ ๊ฒ์ด๋ฉฐ, ์ด๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ํ์ ๊ฐ๋
์ ์ดํดํด์ผ ํฉ๋๋ค:
1. ์๋ก ์: ๋ ์๊ฐ ๊ณต์ฝ์๊ฐ 1๋ฐ์ ์๋ ๊ฒฝ์ฐ.
2. ์ค๊ฐ ์ ์ ํ: ๋ ์ a ์ b ์ฌ์ด์๋ ์ถฉ๋ถํ ๋ง์ ์๊ฐ ์์ด ๋ ๊ฐ์ ์ ์ ํ ์๋ฅผ ์ ํํ ์ ์์.
๋ฐ๋ผ์, ํญ์ ๋ ์ ์ฌ์ด์ ๋ ๊ฐ์ ์๋ฅผ ์ถ๊ฐํ์ฌ ๋ค ๊ฐ์ ์ซ์ ์ฌ์ด์ ์ธ์ ํ ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ 1์ด ๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด ์ฑ์ง์ ์ํ์ ์๋ฆฌ์ ๊ทผ๊ฑฐํ ๊ฒ์
๋๋ค.
************************************
3. ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
# ์ซ์ ์
๋ ฅ ์ฒ๋ฆฌ
N = int(input()) # N: ์ซ์์ ๊ฐ์
# ๊ณต์ฝ์ ๋น๊ตํ ์ซ์ ์
๋ ฅ ์ฒ๋ฆฌ(์ ๋ ฌ)
nArr = sorted(list(map(int, input().split()))) # nArr: ์
๋ ฅ๋ ์ซ์๋ค์ ์ ๋ ฌํ์ฌ ์ ์ฅ
# ์ ๋ต ์ถ๋ ฅ ๋ณ์
ans = 0 # ans: ์ ๋ต์ ์ ์ฅํ๋ ๋ณ์
# ๊ณต์ฝ์ ๊ตฌํ๋ ํจ์ ์ ์ธ
def gcd(a, b):
# ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ์ฌ ์ต๋๊ณต์ฝ์ ๊ตฌํ๊ธฐ
while a % b != 0:
tmp = a % b
a = b
b = tmp
return b # b: ์ต๋๊ณต์ฝ์
# ์ธ์ ํ ๋ ์์ ๊ณต์ฝ์๊ฐ 1์ธ ์ฌ๋ถ ํ์ธ
for i in range(N-1):
if gcd(nArr[i], nArr[i+1]) != 1: # ๊ณต์ฝ์๊ฐ 1์ด ์๋ ๊ฒฝ์ฐ
for j in range(nArr[i] + 1, nArr[i+1]):
if gcd(nArr[i], j) == 1 and gcd(j, nArr[i+1]) == 1: # ๊ณต์ฝ์๊ฐ 1์ธ ์๊ฐ ์๋ค๋ฉด
ans += 1
break
if j == nArr[i+1] - 1: # ๋ ์ ์ฌ์ด์ ๊ณต์ฝ์๊ฐ 1์ธ ์๊ฐ ์๋ค๋ฉด
ans += 2
print(ans)
4. ์ฝ๋ ์ค๋ช
gcd ํจ์:
• ์ ๋ ฅ๋ ๋ ์ซ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ํจ์์ ๋๋ค.
• ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ์ฌ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํฉ๋๋ค.
• ๋ ์ซ์๊ฐ ์๋ก ๋๋์ด ๋จ์ด์ง ๋๊น์ง ๋๋จธ์ง๋ฅผ ๊ตฌํ์ฌ ๋ฐ๋ณตํฉ๋๋ค.
• ๋๋จธ์ง๊ฐ 0์ด ๋๋ฉด ์ต๋๊ณต์ฝ์๋ฅผ ๋ฐํํฉ๋๋ค.
๋ฉ์ธ ํจ์:
• ์์ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ๊ฐ ์๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ์ ๋ ฅ๋ฐ์ ์ ๋ ฌํฉ๋๋ค.
• ์ธ์ ํ ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ 1์ธ์ง ํ์ธํฉ๋๋ค.
• ๊ณต์ฝ์๊ฐ 1์ด ์๋ ๊ฒฝ์ฐ, ๊ทธ ์ฌ์ด์ ๊ณต์ฝ์๊ฐ 1์ธ ์ซ์๋ฅผ ์ถ๊ฐํ์ฌ ํด๊ฒฐํฉ๋๋ค.
• ์ต์ข ์ ์ผ๋ก ํ์ํ ์ซ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
** ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด๋? **
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ(Euclidean algorithm)์ ๋ ์์ ์ต๋๊ณต์ฝ์(GCD)๋ฅผ ์ฐพ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๋๋์ด ๋๋จธ์ง๊ฐ 0์ด ๋ ๋๊น์ง ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋๋จธ์ง๊ฐ 0์ด ๋์์ ๋, ๊ทธ ์ง์ ์ ์์ ์๊ฐ ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ ๋ฉ๋๋ค.BOJBOJ
1. ๋จ๊ณ 1:
• 252๋ฅผ 105๋ก ๋๋๋๋ค. ๋ชซ์ 2์ด๊ณ ๋๋จธ์ง๋ 42์
๋๋ค.
• ์: 252 = 105 \times 2 + 42
2. ๋จ๊ณ 2:
• 105๋ฅผ 42๋ก ๋๋๋๋ค. ๋ชซ์ 2์ด๊ณ ๋๋จธ์ง๋ 21์
๋๋ค.
• ์: 105 = 42 \times 2 + 21
3. ๋จ๊ณ 3:
• 42๋ฅผ 21๋ก ๋๋๋๋ค. ๋ชซ์ 2์ด๊ณ ๋๋จธ์ง๋ 0์
๋๋ค.
• ์: 42 = 21 \times 2 + 0
๋ง์ง๋ง ๋๋จธ์ง๊ฐ 0์ด ๋์์ ๋, ๋๋จธ์ง๊ฐ 0์ด ๋๊ธฐ ์ง์ ์ ์ 21์ด ๋ ์ 252์ 105์ ์ต๋๊ณต์ฝ์(GCD)์
๋๋ค.
***********************
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 2559[์์ด] (0) | 2024.06.17 |
---|---|
BOJ(๋ฐฑ์ค) 7795[๋จน์ ๊ฒ์ธ๊ฐ ๋จนํ ๊ฒ์ธ๊ฐ] (0) | 2024.06.16 |
BOJ(๋ฐฑ์ค) 1978[์์ ์ฐพ๊ธฐ] (0) | 2024.06.13 |
BOJ(๋ฐฑ์ค) 2503[์ซ์ ์ผ๊ตฌ] (0) | 2024.06.07 |
BOJ(๋ฐฑ์ค) 19532[์ํ์ ๋น๋๋ฉด๊ฐ์์ ๋๋ค] (0) | 2024.06.07 |