Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

피너클의 it공부방

백준 26042 식당 입구 대기 줄 (c++) : 피너 본문

백준

백준 26042 식당 입구 대기 줄 (c++) : 피너

피너클 2024. 11. 18. 12:54
728x90
반응형

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

 

queue를 이용한 구현문제다.

int n;
queue<int> q;
int a, b;
int m = 0, l = 987654321;

a, b는 입력받는 정보고

m은 최대 학생수이고

l은 최대 학생일때 번호 가장 작은 학생이다.

	cin >> n;
	while (n-- > 0) {
		cin >> a;

값을 입력받고

		if (a == 1) {
			cin >> b;
			q.push(b);

			if (q.size() > m) {
				m = q.size();
				l = b;
			}
			else if (q.size() == m) {
				if (l > b) l = b;
			}
		}

1을 입력받으면 다시 학생 번호 (b) 를 입력받는다.

q에 b를 넣고

만약 q의 크기가 m보다 크다면 m와 l을 업데이트 한다.

만약 q의 크기가 m과 같으면 l과 방금 입력받은 b를 비교하며 더 작은 수를 l에 넣는다.

		else {
			q.pop();
		}
	}

a에 다른 숫자가 들어가면 pop하면 된다.

그후 출력하면 된다.

#include <iostream>
#include <queue>

using namespace std;

int n;
queue<int> q;
int a, b;
int m = 0, l = 987654321;

int main()
{
	cin >> n;
	while (n-- > 0) {
		cin >> a;
		if (a == 1) {
			cin >> b;
			q.push(b);

			if (q.size() > m) {
				m = q.size();
				l = b;
			}
			else if (q.size() == m) {
				if (l > b) l = b;
			}
		}
		else {
			q.pop();
		}
	}

	cout << m << ' ' << l << endl;
}

전체코드다.

728x90
반응형
Comments