๋ฌธ์
์๋ก ๋ค๋ฅธ ์์ ์ ์๋ก ์ด๋ฃจ์ด์ง ํฌ๊ธฐ๊ฐ N์ธ ์งํฉ A๊ฐ ์ฃผ์ด์ง๋ค. ์์ ์ด๋ ์งํฉ์ ์๋ก์ด ์์ ์ ์๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค. ์ด๋, ์งํฉ์ ์๋ ์๋ฅผ ์ ๋ ฌํ ๊ฒฐ๊ณผ์์ ์ธ์ ํ ๋ ์์ ๊ณต์ฝ์๊ฐ 1์ ๋์ผ๋ฉด ์ ๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์ ์๋ฅผ ์ต์ ๋ช ๊ฐ ์ถ๊ฐํด์ผํ๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 50)
๋์งธ ์ค์๋ ์งํฉ์ ํฌํจ๋์ด ์๋ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์๋ 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๋ฅผ ์ต์ ๋ช ๊ฐ ์ถ๊ฐํด์ผํ๋์ง ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
4
2200 42 2184 17
์์ ์ถ๋ ฅ
3
ํํธ
์์ 1์ ๊ฒฝ์ฐ์ {43, 2195, 2199}๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ ๋ ฌ๋ ๋ฐฐ์ด์ ์ฐ์๋ ๋ ์๋ค์ ์ํํ๋ฉด์ ๊ทธ ์ฌ์ด์ ์ถ๊ฐํด์ผํ ์ซ์๊ฐ ์๋ค๋ฉด ์ถ๊ฐํด์ผ ํ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ค.
CASE 1. ๋ ์๊ฐ ์๋ก์
๋ ์๊ฐ ์ด๋ฏธ ์๋ก์์ด๊ธฐ ๋๋ฌธ์ ์๋ฌด๊ฒ๋ ํ์ง ์์
CASE 2. ๋ ์๊ฐ ์๋ก์๊ฐ ์๋
๋ ์์ ๋ชจ๋ ์๋ก์์ธ ์ซ์๊ฐ ์๋ค๋ฉด ๊ทธ ์ซ์ ํ๋๋ฅผ ์ถ๊ฐ (cnt += 1)
๋ฐ๊ฒฌํ์ง ๋ชปํ๋ค๋ฉด ์ซ์ ๋ ๊ฐ๋ฅผ ์ถ๊ฐ (cnt += 2)
์ถ๊ฐํ๋ ์ซ์๊ฐ ์ต๋ 2๊ฐ์ธ ์ด์ ?
* ์ ์ : ๋ ์ ์ a, b์ฌ์ด์๋ ์ต์ ํ๋์ ์๋ก์์ธ ์ ์๊ฐ ํญ์ ์กด์ฌ
* ๋ฌธ์ ์ํฉ a, b์ฌ์ด์ ์ด๋ ํ ๋จ์ผ ์ ์๋ ๋ ์์ ๋์์ ์๋ก์๊ฐ ์๋
-> a์ ์๋ก์์ธ x
-> b์ ์๋ก์์ธ y
๋ ์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
* 2๊ฐ์ ์๋ก ์ถฉ๋ถํ ์ด์
- x : a์ ์๋ก์์ด์ง๋ง, b์ ์ธ์๋ฅผ ํฌํจ
- y : b์ ์๋ก์์ด์ง๋ง, a์ ์ธ์๋ฅผ ํฌํจ
-> a-x-y-b๋ ์ธ์ ํ ์์ ์๋ก์์.
import sys
input = sys.stdin.readline
n = int(input())
nums = list(map(int,input().split()))
nums.sort()
# ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ
def _gcd(a,b):
while a%b != 0:
tmp = a%b
a = b
b = tmp
return b
cnt = 0
# ์ธ์ ํ ๋ ์๋ค์ ํ์ํ๋ฉฐ
for i in range(0,n-1):
# ๋ ์๊ฐ ์๋ก์์ธ์ง ์ฒดํฌ
if _gcd(nums[i], nums[i+1]) != 1:
# ์๋ก์๊ฐ ์๋๋ผ๋ฉด ๋ ์ ์ฌ์ด๋ค์ ์๋ฅผ ์ํํ๋ฉด์
for j in range(nums[i], nums[i+1]):
flag = True
# ๋ ์์ ์๋ก์์ธ ์๋ฅผ ๋ฐ๊ฒฌํ๋ฉด cnt += 1
if _gcd(nums[i], j) == 1:
if _gcd(j, nums[i+1]) == 1:
cnt += 1
flag = False
break
# ์ด๋ ํ ์์๋ ๋ ์๊ฐ ์๋ก์์ด์ง ๋ชปํ๋ค๋ฉด cnt += 2
if flag:
cnt += 2
print(cnt)
'๐์ฝ๋ฉํ ์คํธ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1912 - ์ฐ์ํฉ (Python) (0) | 2024.10.27 |
---|---|
[๋ฐฑ์ค] 3055 - ํ์ถ (Python) (0) | 2024.10.17 |
[๋ฐฑ์ค] 2247 - ์ค์ง์ ์ฝ์ (Python) (0) | 2024.10.13 |
[๋ฐฑ์ค] 1647 - ๋์ ๋ถํ ๊ณํ (Python) (0) | 2024.08.31 |
[๋ฐฑ์ค] 1368 - ๋ฌผ๋๊ธฐ (Python) (0) | 2024.08.30 |