PS (C, C++)

[백준/C & C++] 1453 피시방 알바

최연재 2022. 8. 26. 01:01

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

 

1453번: 피시방 알바

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

www.acmicpc.net

코드 (C)

#include <stdio.h>

int main()
{
	int n, result = 0, want, seat[101] ={0,};
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &want);
		if (seat[want - 1] == 0) seat[want - 1]++;
		else result++;
	}
	printf("%d", result);
	return 0;
}

코드 (C++)

#include <iostream>
using namespace std;

int main()
{
	int seat[101] = { 0, }, n, result = 0, want;

	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> want;
		if (seat[want - 1] == 0) seat[want - 1]++;
		else result++;
	}

	cout << result;
	return 0;
}

코드설명 

손님의 수 n만큼 반복문을 돌면서 손님이 원하는 번호를 입력받는다. 

seat배열은 pc방 자리를 뜻하고, 0이면 앉은 사람이 없는 것이고, 1이면 이미 앉은 사람이 있는 것이다. 

 

만약  손님이 seat[원하는 번호-1] (배열의 인덱스가 0부터 시작하므로) 이 0이면 자리에 앉을 수 있다는 뜻이므로 seat[원하는 번호-1]를 1로 만든다.  만약 seat[원하는 번호-1]이 1이면 이미 앉아있는 사람이 있는 것이므로 result(거절당하는 사람의 수) 변수를 1만큼 증가시킨다. 

 

느낀점

배열을 이용해서 금방 풀었다. 

'PS (C, C++)' 카테고리의 다른 글

[백준/C & C++] 1773 폭죽쇼  (0) 2022.08.26
[백준/C & C++] 1427 소트인사이드  (0) 2022.08.26
[백준/C & C++] 1225 이상한 곱셈  (0) 2022.08.24
[백준/C] 1718 암호  (0) 2022.08.24
[백준/C] 1547 공  (0) 2022.08.22