백준 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);
}
}
}
728x90
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[백준 11866번] 요세푸스 문제 0 (0) | 2023.02.25 |
---|---|
[백준 9012번] 괄호 (0) | 2023.02.18 |
[백준 4949] 균형잡힌 세상 (0) | 2023.02.18 |
[백준 12605] 단어순서 뒤집기 (1) | 2023.02.18 |
[백준 17608]막대기 문제 최댓값 갱신 원리 및 논리 파악하기! (0) | 2023.02.16 |