백준 C++ 스킬) 문자열 비교하기

2023. 2. 3. 02:04자료구조 및 알고리즘/백준

728x90

앞에 push라는 글자를 포함하는지 알고 싶으면 "push" 써서 비교하면 된다.

그런데 split이나 잘라서 하는거는? 나중에 알아보자!

 

10828번 스택 코드 발췌

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

stack<int> dudtls;
void push(int a) {
	dudtls.push(a);
}
void pop() {
	if (dudtls.empty() == 1) cout << "-1" << "\n";
	else {
		cout << dudtls.top() << endl; // 반환
		dudtls.pop(); // 삭제
	} 
}
void size() {
	cout << dudtls.size() << "\n";
}
void empty() {
	if (dudtls.empty() == true) cout << "1" << "\n";
	else cout << "0" << "\n";
}
void top() {
	if (dudtls.empty() == 1) cout << "-1" << "\n";
	else cout << dudtls.top() << "\n";
}
int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		string a;
		cin >> a;
		if (a == "push") {
			int k;
			cin >> k;
			push(k);
		}
		else if (a == "pop") pop();
		else if (a == "size") size();
		else if (a == "empty") empty();
		else if (a == "top") top();
	}
	return 0;
}

 

또는 char로 받아서 문자열 하나하나를 비교할 수도 있다. 얘는 split 대용으로도 사용할 수 있는 듯... (다만, split이 더 편한 상황이 오겠지만.)

#include<stdio.h>
char i[5];
int main(){
	int s[10000],top=0,n;
	scanf("%d",&n);
	for (;n--;){
		scanf("%s",i);
		if (i[0]=='p'&&i[1]=='u')
			scanf("%d",&s[top++]);
		else if (i[0]=='p'&&i[1]=='o')
			printf("%d\n",top?s[--top]:-1);
		else if (i[0]=='s')
			printf("%d\n",top);
		else if (i[0]=='e')
			printf("%d\n",top?0:1);
		else if (i[0]=='t'){
			printf("%d\n",top?s[top-1]:-1);
		}
	}
}

출처) https://www.acmicpc.net/source/8132258

728x90