https://www.acmicpc.net/problem/1453
코드 (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 |