백준 문제풀이/브론즈1

백준 1453번 - 피시방 알바

void_melody 2021. 10. 28. 11:54

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

 

1453번: 피시방 알바

첫째 줄에 손님의 수 N이 주어진다. N은 100보다 작거나 같다. 둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 입력으로 주어진다.

www.acmicpc.net

사고과정)

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;
	}
}