전형적인 수학문제로 문제를 풀었다.
나중에 다른분들 풀이 보니까 bruteforce 방식으로도 풀 수 있는 모양.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import sys
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
# y = ax + b -> a == 기울기, b == y 절편
# a = x2 - x1 / x1 - x0 -> 기울기는 3개부터 구할 수 있다.
# y = ax + b -> arr[i+1] = a * arr[i] + b
# b = arr[i+1] - a * arr[i]
def solve(n, arr):
if n == 1: # 무수히 많음
return 'A'
elif n == 2 and arr[0] != arr[1]: # 기울기를 구할 수 없음
return 'A'
a, b = 0, 0
if arr[1] - arr[0] == 0:
b = arr[1]
else:
a = (arr[2] - arr[1]) // (arr[1] - arr[0])
b = arr[1] - arr[0] * a
is_pattern = True
for i in range(1, n):
if arr[i] == arr[i-1] * a + b:
continue
else:
is_pattern = False
break
if is_pattern:
return arr[n - 1] * a + b
else:
return 'B'
print(solve(N, arr))
|
cs |
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[DP] BOJ 10942 펠린드롬? (0) | 2023.08.01 |
---|---|
[이분탐색] BOJ 1477 휴게소 세우기 (0) | 2023.07.31 |
[BFS] BOJ 13859 숨바꼭질 3 (0) | 2023.07.20 |
[정렬] BOJ 18869 멀티버스 Ⅱ (0) | 2023.07.18 |
[시뮬레이션] BOJ 17144 미세먼지 안녕! (0) | 2023.07.13 |