본문 바로가기
Algorithm/백준

10845. 큐(C++)

by IT learning 2021. 4. 12.
728x90

문제에서 나오는 큐의 기능들을 배열을 이용해서 구현하거나, STL을 사용하면 되는 문제였다.

 

사실 -1이 나오는 예외 처리 말고는 어려운게 없는 문제다.

 

 

먼저 배열로 사용한 문제

#include <bits/stdc++.h>
using namespace std;

const int MX = 1000005;
int dat[MX];
int head = 0, tail = 0;

void push(int x){
	if(tail <= 0) {
		tail = 0;
		dat[tail++] = x;
	} else {
		dat[tail++] = x;
	}
	
}

int pop(){
	if(tail - head == 0) {
		return -1;
	}
	
	return dat[head++];
}

int front(){
	if(tail - head == 0) {
		return -1;
	}
	return dat[head];
}

int back(){
	if(tail - head == 0) {
		return -1;
	}
	
	return dat[tail - 1];
}

int size() {
	return tail - head;
}

int empty() {
	if(tail - head == 0) {
		return 1;
	}
	return 0;
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int T;
	string con;
	cin >> T;
	while(T--) {
		cin >> con;
		if(con == "push") {
			int num;
			cin >> num;
			push(num);
		} else if(con == "pop") {
			cout << pop() << '\n';
		} else if(con == "size") {
			cout << size() << '\n';
		} else if(con == "empty") {
			cout << empty() << '\n';
		} else if(con == "front") {
			cout << front() << '\n';
		} else if(con == "back") {
			cout << back() << '\n';
		}
	}
}

큐의 각 기능들을 함수로 만들어준 뒤 사용하면 그만!

 

 

 

다음은 STL 사용이다.

#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	queue<int> q;
	int t;

	string con;
	cin >> t;
	while(t--) {
		cin >> con;
		if(con == "push") {
			int num;
			cin >> num;
			q.push(num);
		} else if(con == "pop") {
			if(q.empty()) cout << "-1" << '\n';
			else {
				cout << q.front() << '\n';
				q.pop();
			}
		} else if(con == "size") {
			cout << q.size() << '\n';
		} else if(con == "empty") {
			if(!q.empty()) {
				cout << "0" << '\n';
			} else {
				cout << "1" << '\n';
			}
		} else if(con == "front") {
			if(q.empty()) cout << "-1" << '\n';
			else cout << q.front() << '\n';
		} else if(con == "back") {
			if(q.empty()) cout << "-1" << '\n';
			else cout << q.back() << '\n';
		}
	}
}

훨씬 코드가 간편해졌다.

728x90

'Algorithm > 백준' 카테고리의 다른 글

1629. 곱셈(C++)  (0) 2021.04.21
2178. 미로 탐색 (C++)  (0) 2021.04.18
1926. 그림 (C++)  (0) 2021.04.18
2504. 괄호의 값 (C++)  (0) 2021.04.16
5430 . AC (C++)  (0) 2021.04.14

댓글

IT_learning's Commit