문제 설명
우리는 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까지의 합에서 빼면, 빠진 숫자가 나올것이다.
'PS > CodeUp' 카테고리의 다른 글
CodeUp / 1차원 배열 / 1416번 / 2진수 변환 / C++ (0) | 2020.10.03 |
---|---|
CodeUp / 1차원 배열 / 1412번 / 알파벳 개수 출력하기 / C++ (0) | 2020.10.02 |
CodeUp / 입,출력 / 1125번 / 8진수 16진수 변환 / C++ (0) | 2020.09.30 |
CodeUp / String(문자열) / 2721번 / 순환 문자열 / C++ (0) | 2020.09.29 |