πŸ“¦ Chango/🏫 First Solve at School

[BOJ B2][C++] λ°±μ€€ 1731번: μΆ”λ‘ 

선달 2023. 1. 5. 13:56
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/1731

 

1731번: μΆ”λ‘ 

λ“±μ°¨κ°€ μ •μˆ˜μΈ λ“±μ°¨μˆ˜μ—΄ (μ–΄λ–€ μˆ˜μ— μ°¨λ‘€λŒ€λ‘œ μΌμ •ν•œ 수λ₯Ό λ”ν•΄μ„œ μ΄λ£¨μ–΄μ§€λŠ” μˆ˜μ—΄) 은 2개의 숫자둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. PλŠ” μˆ˜μ—΄μ˜ 첫 번째 수이고, QλŠ” κ·Έ λ‹€μŒμˆ˜κ°€ 되기 μœ„ν•΄ λ°”λ‘œ μ „μ˜ μˆ˜μ— 더해

www.acmicpc.net

 

문제

λ“±μ°¨κ°€ μ •μˆ˜μΈ λ“±μ°¨μˆ˜μ—΄ (μ–΄λ–€ μˆ˜μ— μ°¨λ‘€λŒ€λ‘œ μΌμ •ν•œ 수λ₯Ό λ”ν•΄μ„œ μ΄λ£¨μ–΄μ§€λŠ” μˆ˜μ—΄) 은 2개의 숫자둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. PλŠ” μˆ˜μ—΄μ˜ 첫 번째 수이고, QλŠ” κ·Έ λ‹€μŒμˆ˜κ°€ 되기 μœ„ν•΄ λ°”λ‘œ μ „μ˜ μˆ˜μ— 더해야 ν•˜λŠ” μˆ˜μ΄λ‹€. 예λ₯Ό λ“€μ–΄ P=1, Q=2 이면 κ·Έ λ“±μ°¨μˆ˜μ—΄μ€ 1, 3, 5, 7, ..... 이 λœλ‹€.

λ“±λΉ„κ°€ μ •μˆ˜μΈ λ“±λΉ„μˆ˜μ—΄ (μ–΄λ–€ μˆ˜μ—μ„œ μ‹œμž‘ν•΄ μ°¨λ‘€λ‘œ 같은 수λ₯Ό κ³±ν•˜μ—¬ λ§Œλ“  μˆ˜μ—΄) 은 λ“±μ°¨μˆ˜μ—΄κ³Ό λΉ„μŠ·ν•˜κ²Œ 2개의 숫자둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. PλŠ” μˆ˜μ—΄μ˜ 첫 번째 수이고, QλŠ” κ·Έ λ‹€μŒμˆ˜κ°€ 되기 μœ„ν•΄ λ°”λ‘œ μ „μ˜ μˆ˜μ— κ³±ν•΄μ•Ό ν•˜λŠ” μˆ˜μ΄λ‹€. 예λ₯Ό λ“€μ–΄ P=3, Q=2이면 κ·Έ λ“±λΉ„μˆ˜μ—΄μ€ 3, 6, 12, ...이 λœλ‹€.

ν…Œλ””λŠ” μ„Έμƒμ—μ„œ μˆ˜ν•™μ„ 제일 μ’‹μ•„ν•΄μ„œ 맀일같이 이 μˆ˜μ—΄μ΄ λ“±μ°¨μˆ˜μ—΄μΈμ§€ λ“±λΉ„μˆ˜μ—΄μΈμ§€ μ •ν•œλ‹€μŒμ— λ‹€μŒ 수λ₯Ό κ΅¬ν•œλ‹€.

μ–΄λ–€ μˆ˜μ—΄μ΄ μ£Όμ–΄μ‘Œμ„ λ•Œ, κ·Έ μˆ˜μ—΄μ˜ κ·œμΉ™μ΄ λ“±μ°¨μˆ˜μ—΄μΈμ§€, λ“±λΉ„μˆ˜μ—΄μΈμ§€ κ²°μ •ν•œ 후에, λ‹€μŒμ— λ“±μž₯ν•  수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 μˆ˜μ—΄μ˜ 길이 N이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 μˆ˜μ—΄μ˜ 각 μ›μ†Œκ°€ μ°¨λ‘€λŒ€λ‘œ 주어진닀. μ£Όμ–΄μ§€λŠ” μˆ˜μ—΄μ€ λ“±μ°¨μˆ˜μ—΄μ΄λ‚˜ λ“±λΉ„μˆ˜μ—΄ 쀑에 ν•˜λ‚˜λ‹€. N은 항상 3 이상 50μ΄ν•˜μ΄λ©°, μž…λ ₯λ˜λŠ” μˆ˜λŠ” 106 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.

좜λ ₯

첫째 쀄에 μˆ˜μ—΄μ˜ λ‹€μŒ μ›μ†Œλ₯Ό 좜λ ₯ν•œλ‹€. 이 μˆ˜λŠ” 20얡보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

 

풀이

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    int n;
    cin >> n;
    vector<int> input(n);
    for(int i=0; i<n; i++)
        cin >> input[i];
    
    bool isArithmetic = false;
    int d = input[1] - input[0];
    int r = input[1] / input[0];
    if(d == input[2] - input[1])
        isArithmetic = true;
    
    if(isArithmetic)
        cout << input[n-1] + d;
    else
        cout << input[n-1] * r;
    
    return 0;
}

/*
 */
λ°˜μ‘ν˜•