PS/CodeUp

CodeUp / 1차원 배열 / 1411번 / 빠진 카드 / C++

KimMinJun 2020. 10. 2. 13:06

문제 설명   

우리는 1부터 N까지의 숫자가 차례대로 적힌 N장의 카드 묶음을 가지고 있다.

그런 데 이 카드 묶음을 옮기는 중 실수로 땅에 떨어뜨려 그 중 한 장을 잃어버렸다.

여러 분은 땅에 떨어진 카드 묶음을 읽어서 빠진 하나의 카드 번호를 찾아 출력해야 한다.

 

입력

첫 줄에는 한 장을 잃어버리기 전 카드의 전체 장수 N이 주어져 있다. 단 . 3 <= N <= 50 이다.

이어지는 N-1개의 각 줄에는 한 장이 빠진 카드 묶음의 카드 숫자가 하나씩 순서 없이 나열되어 있다.

 

출력

여러분은 주 어진 카드 묶음에서 빠진 하나의 카드를 찾아서 그 번호를 출력해야 한다.

 

입력 예시

10

3

4

1

10

2

6

7

5

9

 

출력 예시

8

 

#include <iostream>
using namespace std;

int main() {
    int n, temp;
    int sum1 = 0, sum2 = 0;
    
    cin >> n;
    
    for(int i=0; i<n-1; i++) {
        cin >> temp;
        sum1 += temp;
    }
    
    sum2 = n*(n+1)/2;
    
    cout << sum2 - sum1 << endl;
}

이 문제가 배열 카테고리에 있길래 배열로 풀까 했으나, 배열 없이도 가능하다는 것을 생각해냈다.

아마 시그마를 배웠다면, 합공식을 알것이다.

1부터 n까지의 합은 n(n+1)/2 이다.

따라서 우리가 입력받은거를 다 더한다음에, 1부터 n까지의 합에서 빼면, 빠진 숫자가 나올것이다.