뽕구의 개발일지

[코딩테스트] 백준 #10845 Queue 구현하기 본문

개발 일지/알고리즘\코테

[코딩테스트] 백준 #10845 Queue 구현하기

뽕구 2024. 8. 10. 02:53
728x90
반응형

백준 #10845 Queue 구현하기

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

 

안녕하세요!

드디어 미루고 미루던 코딩테스트 공부를 시작했습니다! 백준에서 준비하고 있고, 익숙한 C# 레벨로 시작했다가 C++로 넘어왔습니다. C++ 완전 처음하는거라 진짜 하나도 모르겠어요. 하나하나 찾아보면서 하고 있습니다ㅠㅠ 특히나 string 다루는게 익숙하지가 않네요. STL 함수를 많이 익숙해져야겠어요.

 

string 비교도 char*로 strcmp()함수를 쓸지 string 자체를 비교할지 고민했었는데, 이정도 레벨에서는 큰 차이 없어보여서

string으로 == 으로 비교했습니다. 

string 비교 시 Compare 함수도 있었는데 == 랑 속도차이 거의 없다는 글을 보아서 편하게 ==로 했습니다. 

 

그리고 cout으로 출력 시 줄 마침으로 endl; 썼었는데, 코드 찾아본 거에서  "\n";을 쓰더라고요.

그래서 두개 다 제출해봤는데 endl; 라인이 204ms나 느렸습니다.

줄 마침은 "\n"; 써야겠어요.

 

구현

#include <iostream>
#include <queue>
using namespace std;


int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	queue<int> que;
	string cmd;
	int cmdCount;

	cin >> cmdCount;

	for (int i = 0; i < cmdCount; i++) {
		cin >> cmd;

		if (cmd == "push") {
			int X;
			cin >> X;
			que.push(X);
		}
		else if (cmd == "pop") {
			if (que.empty()) {
				cout << -1 << "\n";
			}
			else {
				cout << que.front() << "\n";
				que.pop();
			}
		}
		else if (cmd == "size") {
			cout << que.size() << "\n";
		}
		else if (cmd == "front") {
			if (que.empty()){
				cout << -1 << "\n";
			}
			else {
				cout << que.front() << "\n";
			}
			//cout << que.front() << "\n";
		}
		else if (cmd == "back") {
			if (que.empty()) {
				cout << -1 << "\n";
			}
			else{
				cout << que.back() << "\n";
			}
			//cout << que.back() << "\n";
		}
		else if (cmd == "empty") {
			cout << que.empty() << "\n";
		}
	}
	return 0;
}

 

 

마치며

C++ 익숙해지려면 많이 풀어봐야겠습니다ㅠ

다음 문제로 돌아오겠습니다.

 

728x90
반응형