235. 가로수
1) 어떤 전략(알고리즘)으로 해결?
2) 코딩 설명
<내 풀이>
import sys
import math
n = int(sys.stdin.readline().rstrip())
tree = []
for _ in range(n) :
tree.append(int(sys.stdin.readline().rstrip()))
tree.sort()
interval_lis = []
for t in range(1,n) :
interval_lis.append(tree[t]-tree[t-1])
gcdd = interval_lis[0]
for n in range(len(interval_lis)) :
gcdd = math.gcd(interval_lis[n], gcdd)
total_tree_num = (tree[-1]-tree[0])//gcdd+1
print(total_tree_num-len(tree))
<내 틀렸던 풀이, 문제점>
- 요상하게 접근했었음,,
- 무작정 가장 작은 간격을 찾으면 될 것이라 생각했었다 ;;
import sys
n = int(sys.stdin.readline().rstrip())
tree = []
for _ in range(n) :
tree.append(int(sys.stdin.readline().rstrip()))
tree.sort()
interval = 10000000001
for t in range(1,n) :
if tree[t]-tree[t-1] < interval :
interval = tree[t]-tree[t-1]
new = [0 for _ in range(max(tree))]
add_tree = 0
for i in range(1,max(tree)+1,interval) :
if i not in tree :
add_tree+=1
print(add_tree)
<반성 점>
<배운 점>