Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 2485. ๊ฐ€๋กœ์ˆ˜

deo2kim 2021. 9. 16. 19:09
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • ์ˆ˜ํ•™ - ์œ ํด๋ฆฌ๋“œํ˜ธ์ œ๋ฒ• GCD

 

  1. ๋‚˜๋ฌด๋“ค์˜ ๊ฐ„๊ฒฉ์„ ๊ตฌํ•œ๋‹ค.
  2. ๊ฐ„๊ฒฉ๋“ค์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  3. ๊ฐ„๊ฒฉ์„ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ณ  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

 

 

๋ฐ˜์‘ํ˜•