Algorithm Problem/Python
[python] ๋ฐฑ์ค - 2485. ๊ฐ๋ก์
deo2kim
2021. 9. 16. 19:09
๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
- ์ํ - ์ ํด๋ฆฌ๋ํธ์ ๋ฒ GCD
- ๋๋ฌด๋ค์ ๊ฐ๊ฒฉ์ ๊ตฌํ๋ค.
- ๊ฐ๊ฒฉ๋ค์ ์ต๋ ๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ค.
- ๊ฐ๊ฒฉ์ ์ต๋๊ณต์ฝ์๋ก ๋๋๊ณ 1์ ๋นผ์ฃผ๋ฉด ๊ฐ๊ฐ์ ๊ฐ๊ฒฉ ์ฌ์ด์ ์ฌ์ ๋๋ฌด์ ์ซ์๊ฐ ๋์จ๋ค.
๐ป์์ค ์ฝ๋
import sys
def gcd_func(a, b):
while b != 0:
a, b = b, a % b
return a
input = sys.stdin.readline
N = int(input())
trees = [int(input()) for _ in range(N)]
gaps = []
for i in range(1, N): # ๊ฐ๋ก์์ ๊ฐ๊ฒฉ
gaps.append(trees[i] - trees[i - 1])
gaps_set = list(set(gaps)) # ๊ฐ๊ฒฉ ์ค๋ณต ์ ๊ฑฐ
gcd = gaps_set[0]
for i in range(1, len(gaps_set)): # ๊ฐ๊ฒฉ๋ค์ ์ต๋๊ณต์ฝ์
gcd = gcd_func(gcd, gaps_set[i])
answer_tree_cnt = 0
for gap in gaps: # ๊ฐ๊ฒฉ์ ์ต๋๊ณต์ฝ์๋ก ๋๋๊ณ 1์ ๋นผ์ฃผ๋ฉด ์ฌ์ ๋๋ฌด ์ซ์
answer_tree_cnt += gap // gcd - 1
print(answer_tree_cnt)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋ฐ์ํ