Notice
Recent Posts
Recent Comments
Link
알고리즘 모음(C++)
백준 27111 - 출입 기록(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/27111
27111번: 출입 기록
위병소에서 근무하는 헌병은 오늘 근무를 끝마치고 보안 점검을 위해 출입 기록을 살펴보던 중, 오늘 출입 기록의 일부가 누락되었다는 사실을 깨달았다! 오늘 기록된 출입 기록은 총 $N$개이며,
www.acmicpc.net
출입 여부의 누락을 확인하는 문제입니다.
A가 입력했는지의 여부를 B의 값으로 주어졌을 때, 누락된 기록값이 있는지를 구하는 문제입니다.
여기서 확인해야할 것은 간단합니다.
1. B값이 1일 때
1 - 1. 이전에 A가 들어왔다면, 누락값을 1 추가한다
1 - 2. 이전에 A가 안들어왔다면, check 값을 1로 만들면서 들어왔다고 해준다.
2. B값이 0일 때
2- 1. 이전에 A가 들어왔다면, check 값을 0으로 만든다.
2- 2. 이전에 A가 안들어왔다면, 누락값을 1 추가한다.
마지막으로 1~X 까지 인원 수 만큼 check값을 확인합니다. check 값이 0이 아닌 값이 있다면, 해당 값만큼 누락값에 추가한다.
자세한 것은 코드를 참고해주세요
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
#include <deque>
#include <stack>
#define P pair<int,int>
#define F first
#define S second
#define LL long long
using namespace std;
int N, number;
int check[200001];
void solve(){
int ans = 0;
for(int i = 1 ; i <= N; i++){
int x, y;
cin >> x >> y;
number = max(number, x);
if(y == 0){
if(check[x] == 1) check[x] = 0;
else ans++;
}
else{
if(check[x] == 1) ans++;
else check[x] = 1;
}
}
for(int i = 1; i <= number; i++){
if(check[i] != 0) ans++;
}
cout << ans;
}
int main() {
cin.tie(0);
cout.tie(0);
cin >> N;
solve();
return 0;
}
질문 및 조언은 댓글을 남겨주세요
'백준' 카테고리의 다른 글
백준 3053 - 택시 기하학(C++) (0) | 2023.01.15 |
---|---|
백준 4673 - 셀프 넘버(C++) (2) | 2023.01.15 |
백준 27110 - 특식 배부(C++) (0) | 2023.01.15 |
백준 10942 - 팰린드롬?(C++) (2) | 2023.01.11 |
백준 16174 - 점프왕 쩰리(Large) (C++) (0) | 2023.01.11 |