https://www.acmicpc.net/problem/1111
1. 접근
수열의 패턴을 찾기 위해 a와 b를 기준으로 반복문을 통해 결과를 판별하고자 함
2. 틀린 이유
a와 b의 범위는 제한이 없기 때문에 불가능
따라서 수열의 형태를 기준으로 3가지 결론을 판별해야함
3. 풀이
1) 답이 하나 : 수열의 크기가 2이면서 같은 수, 수열의 모든 원소가 같은 패턴을 가질 경우
2) 답을 낼 수 없음 : 수열의 크기가 3이상이면서 처음 3원소로 구한 패턴에 맞지 않은 원소가 있는 경우(즉 패턴이 없는 수열인 경우)
3) 답이 여러 개 : 수열의 크기가 1, 수열의 크기가 2이면서 다른 수일 경우
혼자 꼬아서 생각하며 시간이 오래 걸린 문제
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, num[50];
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> N;
for (int i = 0; i < N; i++)
cin >> num[i];
if (N == 1){
cout << "A\n";
return 0;
}
if (N == 2){
if (num[0] == num[1])
cout << num[1];
else
cout << "A\n";
return 0;
}
else{
int a = 0;
if (num[1] - num[0] != 0)
a = (num[2] - num[1]) / (num[1] - num[0]);
int b = num[1] - num[0] * a;
for (int i = 1; i < N; i++){
if (num[i] != num[i - 1] * a + b){
cout << "B\n";
return 0;
}
}
cout << num[N - 1] * a + b;
}
return 0;
}
'알고리즘 > 알고리즘' 카테고리의 다른 글
[C++]백준 1027번 : 고층건물 (0) | 2020.11.29 |
---|---|
[C++]백준 11657번 : 타임머신 (0) | 2020.11.09 |
[C++]백준 11779번 : 최소비용 구하기 (0) | 2020.11.09 |
[C++]백준 12094번 : 2048(HARD) (0) | 2020.11.04 |
[C++]백준 10800번 : 컬러볼 (0) | 2020.11.03 |