[백준] 1111 – IQ Test

쉬운 목차

문제

#1111: IQ 테스트(acmicpc.net)

#1111: IQ 테스트

다음 번호를 출력합니다.

다음 번호가 여러 개 있으면 A를 인쇄하고 다음 번호를 찾을 수 없으면 B를 인쇄합니다.

www.acmicpc.net

설명

이것은 많은 if 문이 필요한 문제입니다.

세 가지 주요 범주로 나눌 수 있습니다.

– 숫자를 출력할 때: 시퀀스의 크기가 2이고 같은 숫자일 때 패턴을 만족하는 시퀀스에

– A가 출력되는 경우: 시퀀스의 크기가 1일 경우, 시퀀스의 크기가 2일 경우, 기타 숫자. 어쨌든 다음 숫자를 예측할 수 없으므로 A를 반환해야 합니다.

– B가 출력되는 경우: 시퀀스에 패턴이 없는 경우. 문자 그대로 패턴이 없기 때문에 숫자를 얻을 수 없습니다.

그리고 조건부 분기 태그가 많기 때문에 if 문을 한 줄에 넣거나 개행을 사용하지 않도록 주의하세요!

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int N;
    cin >> N;
    
    vector<int> v(N);
    for (int i = 0; i < N; i++) {
        cin >> v(i);
    }
    
    if (N == 1) {
        // 수열의 크기가 1인 경우
        cout << "A";
        return 0;
    }
    
    if (N == 2) {
        // 수열의 크기가 2이면서 같은 수
        if (v(0) == v(1)) cout << v(1);
        // 수열의 크기가 2이면서 다른 수일 경우
        else cout << "A";
        
        return 0;
    }
    
    else {
        int a = 0;
        if (v(1) - v(0) !
= 0) a = ((v(2) - v(1)) / (v(1) - v(0))); int b = v(1) - v(0) * a; for (int i = 1; i < N; i++) { if (v(i) !
= v(i-1) * a + b) { // 패턴이 없는 수열인 경우 cout << "B"; return 0; } } // 패턴을 만족하는 수열인 경우 cout << v(N-1) * a + b; } return 0; }