백준 14402번 : 야근

M1ndCon·2024년 6월 26일
0

Algorithm

목록 보기
8/32

  • Solved.ac 기준 실버 4
  • 사용언어 C++

문제 해석

  1. map을 써서 입력을 string과 int로 구분하여 입력

문제 풀이

  1. 입력 처리: 첫 번째 줄에서 출입기록의 개수 q를 입력받고, 다음 q 줄에서 각 출입기록을 입력받습니다.
  2. 출입 상태 추적: 들어간 기록(+)이면, 해당 직원의 상태를 증가시킵니다. 상태가 처음이라면 1로 초기화합니다. 나온 기록(-)이면, 해당 직원의 상태가 0보다 크면 감소시킵니다. 그렇지 않으면, 야근 횟수를 증가시킵니다.
  3. 퇴근시간까지 나오지 않은 경우 처리: 모든 직원의 상태를 확인하여 0보다 큰 값이 남아있는 경우, 해당 값을 야근 횟수에 더합니다.
#include <iostream>
#include <string>
#include <map>
using namespace std;

int main() {
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);

	int q;
	cin >> q;

	map<string, int> arr;
	int cnt = 0;

	for (int i = 0; i < q; i++) {
		string name, action;
		cin >> name >> action;

		if (action == "+") {
			if (arr.find(name) != arr.end()) {
				arr[name]++;
			}
			else {
				arr[name] = 1;

			}
		}
		else if (action == "-") {
			if (arr.find(name) != arr.end() && arr[name] > 0) {
				arr[name]--;
			}
			else {
				cnt++;
			}
		}
	}

	for (auto& entry : arr) {
		if (entry.second > 0) {
			cnt += entry.second;
		}
	}

	cout << cnt;
	
	return 0;
}
profile
게임 개발자 지망생

0개의 댓글