나의 문제 풀이 방법
문제를 읽었을 때, 아래처럼 생각이 들었다.
1. 괄호 기호가 '(' 다음에 ')'가 된다면 짝꿍이 맞다.
2. 스택 자료구조를 활용하자
3. 스택에 '(' 기호를 넣고 다음에 ')' 기호가 온다면 해당 스택을 pop한다.
4. 스택에 남은 데이터가 있으면? -> NO를 출력
5. 스택에 남은 데이터가 없지만, ')' 기호가 남아있다면? -> NO 출력
6. 모두 짝꿍이라면? -> YES 출력
내 코드
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
class Stack {
constructor() {
this._arr = [];
}
size() {
return this._arr.length;
}
push(item) {
this._arr.push(item);
}
pop() {
return this._arr.pop();
}
peek() {
return this._arr[this._arr.length-1];
}
}
let n = Number(input[0]);
for (var i = 1 ; i <= n ; i++) {
var temp = input[i].split('');
var stack = new Stack();
var others = [];
var j = 0; //카운터변수
while ( j < temp.length ) {
if( temp[j] === "(" ) {
stack.push(temp[j]);
} else {
// 스택의 최상단과 비교한다.
if (stack.peek() === "(") {
stack.pop();
} else {
others.push(temp[j]);
}
}
j += 1;
}
//스택에 원소가 있다면 틀린문자열
if(stack.size() > 0 || others.length > 0) console.log("NO");
else console.log("YES");
}
느낀 점
코드를 더 간결하게 짜려고 노력해야겠다. 다른 사람들 코드를 보니 others에 담는 게 아니라 stack이 비었을 때 바로 NO를 리턴하도록 구현했다. 어렵게 생각하지 말자!
'🤜 코테' 카테고리의 다른 글
백준 문제 풀이 : 수 찾기 (1920) (0) | 2024.05.08 |
---|---|
백준 문제 풀이 : 스택 (10828) (0) | 2024.05.08 |
백준 자바스크립트 입력방법 (0) | 2024.03.26 |
210324 코테공부 (0) | 2021.03.24 |
프로그래머스 Lv1. 모의고사 (Java) (0) | 2021.03.23 |