섭스토리
백준 9012번 <괄호> 본문
백준 9012번 <괄호>
실버 4
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
const fs = require('fs');
const [n, ...input] = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
let solve = function (array) {
let answer = [];
for (let i of array) {
if (i == '(') {
answer.push(i);
} else {
if (answer[answer.length - 1] == '(') {
answer.pop();
} else {
answer.push(i);
}
}
}
if (answer.length == false) {
console.log("YES");
} else {
console.log("NO");
}
}
for (let i of input) {
solve(i);
}
사실 저번에 풀었던 문제랑 비슷해서 어려울 건 없었어요.
https://seobcoding.tistory.com/20
백준 4949번 <균형잡힌 세상>
백준 4949번 <균형잡힌 세상> 실버 4 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")..
seobcoding.tistory.com
그때랑 거의 비슷하게 코드를 짰는데 풀고 나서 보니깐 이 문제는 굳이 이렇게 안 풀어도 되겠더라구요.
다른 분이 짜신 코드입니다.
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split('\n');
for (var i = 1; i <= input[0]; i++) {
var temp = input[i];
while (temp.indexOf("()") >= 0) {
temp = temp.replace("()", "");
}
if (temp === "") {
console.log("YES");
} else {
console.log("NO");
}
}
각각의 테스트 케이스 문자열을 temp라는 변수로 반복문 내에서 선언합니다.
그리고 문자열 내에 "()"를 찾아 replace()메서드로 삭제해줍니다.
그리고 이 과정을 문자열 내에 "()" 가 모두 사라질 때까지 반복해줍니다.
만약에 temp 가 "(()()))())" 라면
한 번 삭제를 거치고 나서는 "(()))())" --> "())())" --> ")())"--> "))"
이 순서를 거쳐서 최종적으로
temp == "))" 가 반환됩니다.
그렇다면 이 문자열은 VPS가 아니기 때문에 모두 삭제가 안된 것이고, "NO"를 출력하게 됩니다.
아 참! 드디어 실버 5 진입!!
골드를 향해 가봅니다.
헤헤헤헤헤후후후후
'백준 풀이 🍪' 카테고리의 다른 글
백준 3273번 <두 수의 합> (0) | 2022.09.28 |
---|---|
백준 10828번 <스택> (0) | 2022.08.27 |
백준 10814번 <나이순 정렬> (0) | 2022.08.25 |
백준 11866번 <요세푸스 문제 0> (0) | 2022.08.25 |
백준 4949번 <균형잡힌 세상> (0) | 2022.08.19 |