본문 바로가기

PS/BaekJoon

[C++/26042] 식당 입구 대기 줄


 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.


정답 비율이 33퍼센트정도 되길래, 와 문제 어려운 문제구나 실버 5인데도 이정도 정답률이면 배울 점이 많을 수 있겠다 싶어서 도전을 하게 되었습니다. 일단 기본적으로 입력값 10만으로 시작하기 때문에 특정 자료구조를 사용해야겠구만 하는 찰나에 큐가 생각이 났고, 그리고 읽어보면서 딱히 어려운 점이 없길래 그대로 구현을 시작했습니다.

그 결과 "맞았습니다"를 받게 되었고? 왜 어려웠을까 질문 게시판과 난이도 기여를 들어가보았더니 글을 잘못읽고 실수하신 분들이 많았습니다. 저는 운 좋게 한번에 이해를 해서 쉽게 풀이했습니다. 아래는 정답 코드입니다.

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

#include<iostream>
#include<queue>

using namespace std;

int n,order,number;
pair<int,int> checkLine;
queue<int> line;

void pushLine(int student) {
	
	line.push(student);
	
	if(checkLine.first == line.size()){
		if(checkLine.second > student){
			checkLine.second = student;
		}
	} else if(checkLine.first < line.size()){
		checkLine = {(int)line.size(), student};
	}
	
}

void popLine() {
	
}

int main() {
	
	checkLine = {0,0};
	
	cin >> n;
	
	for(int i = 0; i < n; i++){
		cin >> order;
		if(order == 1){
			cin >> number;
			pushLine(number);
		} else{
			line.pop();
		}
	}
	
	cout << checkLine.first << " " << checkLine.second << "\n";
	
	return 0;
}

'PS > BaekJoon' 카테고리의 다른 글

[C++/14402] 야근  (0) 2024.08.31
[C++/8891] 점 숫자  (0) 2024.08.28
[C++/2594] 놀이공원  (0) 2024.08.23
[C++/16958] 텔레포트  (0) 2024.08.14
[C++/27210] 신을 모시는 사당  (0) 2024.08.09