728x90
문제 보기
[사용한 알고리즘]
구현
[문제 접근]
a값과 b값은 수식을 통해서 구할 수 있습니다. 만약 a, b값이 주어진 N개의 숫자를 모두 만족시키면 다음 수를 출력하고, 만족시키지 못하면 B를 출력합니다. 모든 숫자가 동일한 경우에는 동일한 숫자를 출력하고, N이 2보다 작은데 두 숫자가 다른 경우는 A를 출력하였습니다.
[알고리즘]
1. (array[2] - array[1]) // (array[1] - array[0]) 식으로 a 값을 구합니다. array[1] - array[0] * a 식으로 b값을 구합니다
2. a, b값으로 주어진 N개의 숫자를 모두 만족시키는지 확인합니다.
3. 모두 만족시키면 다음 수를 출력하고, 만족시키지 못하면 B를 출력합니다.
* N이 1이면 A, N이 2이고 두 숫자가 다르면 A를 출력합니다. 다음 수로 무수히 많은 값을 출력할 수 있기 때문입니다.
* 만약 array[1] - array[0] 값이 0이면 런타임 에러가 발생하므로 a값은 0, 자동적으로 b값은 array[1]값을 대입합니다.
[코드]
if __name__ == "__main__":
n = int(input())
array = list(map(int, input().split()))
# 모든 수가 같으면 A 출력
if n == 1:
print("A")
elif n == 2:
if array[0] == array[1]:
print(array[0])
else:
print("A")
else:
if array[1] - array[0] == 0:
a = 0
b = array[1] # b = array[1] - array[0] * a이기 때문에
else:
a = (array[2] - array[1]) // (array[1] - array[0])
b = array[1] - array[0] * a
# a, b값이 패턴을 만족시키는지 확인
flag = True
for i in range(1, n):
if array[i] == array[i - 1] * a + b:
continue
else:
flag = False
break
if flag:
print(array[n - 1] * a + b)
else:
print("B")
728x90
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 10836] 여왕벌 - Python (0) | 2020.12.11 |
---|---|
[백준 1744] 수 묶기 - Python (0) | 2020.12.10 |
[백준 2638] 치즈 - Python (0) | 2020.12.01 |
[백준 18809] Gaaaaaaaaaarden - Python (0) | 2020.11.25 |
[ 백준 1707 ] 이분 그래프 - Python (0) | 2020.11.24 |