황소개발자

백준 17088 파이썬 python : 등차수열 변환 @@황소처럼 우직하게@@ 졸려뒤지것네 본문

백준 문제 풀이

백준 17088 파이썬 python : 등차수열 변환 @@황소처럼 우직하게@@ 졸려뒤지것네

hjp845 2020. 4. 23. 03:54
반응형

지금시각 새벽 3시 53분

앞에 두 숫자를 조작해준다 그 경우의 수는 9가지.

import sys
input = sys.stdin.readline

n = int(input())
B = list(map(int, input().split()))

if n == 1:
    print(0)
    exit()

def check(first, second, b):
    diff = second - first
    new = [first + diff * i for i in range(len(b))]
    flag = True
    change = 0
    for i in range(2, len(b)):
        if abs(new[i] - b[i]) > 1:
            return [False, change]
        if new[i] == b[i]:
            pass
        else:
            change += 1
    return [True, change]

ans = 999999999
for k in [-1, 0, 1]:
    for u in [-1, 0, 1]:
        flag, change = check(B[0] + k, B[1] + u, B)
        if flag:
            if k != 0:
                change += 1
            if u != 0:
                change += 1
            ans = min(ans, change)

print(ans if ans != 999999999 else -1)

 

반응형
Comments