https://www.acmicpc.net/problem/4949
//균형잡힌 세상 실버4
//안좋은 코드
#include <iostream>
#include <string>
using namespace std;
int main (){
string str;
cin >> str;
int a,b=0;
for (int i=0; i<str.size(); i++){
if(a==0||b==0){
if(str[i]==']'||str[i]== ')'){
cout <<"no";
break;
}
}
if(str[i]== '[')
{
a=1;
}
if(str[i]== ']')
{
a=0;
}
if(str[i]== '(')
{
b=1;
}
if(str[i]== ')')
{
b=0;
}
if(str.back()=='.'){//str의 마지막이 .인지 보기 위해서는 end가 아니라 back을 써야함
if(a==0&&b==0){
cout <<"yes";
break;
}
else{
cout <<"no";
break;
}
}
}
return 0;
}
위에처럼 했는데 출력이 안되더라
왜 안되지 싶은..
단순하게 flag처럼 이용해서 (이면 1로 바꿔주고 )이면 0으로바꿔주고 0인데 )나오면 no출력해주고 마지막에 . 나왔을때 a,b둘다 0 아니면 no출력해주는 로직인데 .. 조금 수정하면 가능할 것 같기두.
//균형잡힌 세상 실버 4
//stack 이용함
#include <iostream>
#include <stack>
using namespace std;
bool isBalanced(const string& str) {
stack<char> s;
for (auto c : str) {
if (c == '(' || c == '[') {
s.push(c);
} else if (c == ')') {
if (s.empty() || s.top() != '(') {
return false;
}
s.pop();
} else if (c == ']') {
if (s.empty() || s.top() != '[') {
return false;
}
s.pop();
}
}
return s.empty();
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
string str;
while (getline(cin, str)) {
if (str == ".") {
break;
}
if (isBalanced(str)) {
cout << "yes" << endl;
} else {
cout << "no" << endl;
}
}
return 0;
}
이거 제출해서 맞은 코드
함수를 나눠서 쓰는거 노력해야할 것 같다.
[백준/실버3] 백준 2108번 통계학 - c++ (수학/ 구현/ 정렬 알고리즘) 문제 해석/코드 설명 (0) | 2024.03.12 |
---|---|
[백준/실버5] 백준 13241번 최소공배수 - c++ / 유클리드 호제법(최대공약수, 최소공배수) 문제 해석/코드 설명 (0) | 2024.03.12 |
[백준] 2839 설탕배달 실버 4 C++ (0) | 2023.07.22 |
c++ cin, cout 왜 시간초과? (0) | 2023.07.19 |
[C++ 코딩테스트 자료구조 알고리즘] 01-1 배열, 연결리스트(linked list), std::array (5) | 2023.04.02 |
댓글 영역