접근 방법
알고리즘 : 스택
1. 입력 값 정렬
2. 값 비교 후 스택 적용
Javascript
function solution() {
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.trim()
.split("\n")
.map((val) => val.trim());
let len = input.length;
for (let i = 0; i < len - 1; i++) {
let arr = input[i].split("").filter((v) => v === "(" || v === ")" || v === "[" || v === "]");
if (arr.length === 0) {
console.log("yes");
continue;
}
let stk = [];
arr.forEach((v) => {
if (stk.length === 0) {
stk.push(v);
} else {
let tmp = stk[stk.length - 1];
if ((v === ")" && tmp === "(") || (v === "]" && tmp === "[")) {
stk.pop();
} else {
stk.push(v);
}
}
});
if (!stk.length) {
console.log("yes");
} else {
console.log("no");
}
}
}
solution();
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin); //제출 시 삭제
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
while(1){
string s;
getline(cin,s);
if(s == ".") break;
stack<char> stk;
for(char a: s){
if(a=='('||a==')'||a=='['||a==']'){
if(stk.empty()) stk.push(a);
else{
char tmp = stk.top();
if((a == ')' && tmp == '(') || (a == ']' && tmp == '[')){
stk.pop();
} else{
stk.push(a);
}
}
}
}
if(stk.empty()){
cout<<"yes"<<"\n";
continue;
} else{
cout<<"no"<<"\n";
continue;
}
}
}
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 쇠막대기 10799 (Javascript,c++) (0) | 2022.06.18 |
---|---|
[baekjoon] 그림 1926 (C++) (0) | 2022.06.17 |
[baekjoon] AC 5430 (C++) (0) | 2022.06.16 |
[baekjoon] 오큰수 17298 (Javascript,c++) (0) | 2022.06.15 |
[baekjoon] 옥상 정원 꾸미기 6198 (Javascript, c++) (0) | 2022.06.15 |