https://www.acmicpc.net/problem/1453
사고과정)
1. 원하는 자리들에 1을 넣어줌.
2. 전체 자리를 살펴보면서, 0이 아닌 경우(즉, 자리가 있는 경우)의 수를 셈.
3. 만약 처음 들어온 사람 수 == 자리 있는 경우 라면, 중복이 없는 경우이니 그냥 0출력.
4. 만약 처음 들어온 사람 수 != 자리 있는 경우 라면, 중복이 있는 경우이다.
이럴 때 중복된 사람 수 를 출력해야하니 (처음 들어온 사람수 - 사람이 있는 자리 수)를 하면, 거절 당한 사람 수겠지.
#include <iostream>
using namespace std;
int main()
{
int num = 0;
cin >> num;
int seat[100] = { 0, };
int temp = 0; int cnt = 0;
for (int i = 0; i < num; i++)
{
cin >> temp;
seat[temp - 1] = 1;
}
for (int i = 0; i < 100; i++)
{
if (seat[i] != 0)
cnt++;
}
if (num == cnt)
{
cout << 0 << endl;
return 0;
}
else
{
cout << num - cnt << endl;
return 0;
}
}
'백준 문제풀이 > 브론즈1' 카테고리의 다른 글
백준 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.11.14 |
---|---|
백준 1546번 - 평균 (0) | 2021.10.28 |
백준 1259번 - 팰린드롬수(palindrome) (0) | 2021.10.28 |
백준 1157번 - 단어 공부 (0) | 2021.10.28 |
백준 1145번 - 적어도 대부분의 배수 (0) | 2021.10.28 |