🤜 코테
백준 문제 풀이 : 쇠막대기 (10799)
wnwlals13
2024. 6. 13. 16:38
문제 접근
- 처음
- 우선 stack에 넣는다.
- 현재 괄호가 "(" 라면 쇠막대기를 하나 더한다
- 현재 괄호가 ")"라면 전 괄호와 쌍이 맞을 때 기존 쇠막대기 수를 2배한다.
- stack에 넣은 쌍 2개를 꺼낸다.
문제 풀이 실패 요인
- 비슷하지만, 쇠막대기 개수를 계산하는 포인트가 달랐던 것 같다. stack에 모두 넣고 뺀다는 게 좀 실패 요인 이었던 것 같다.
- 아깝다. 좀만 더 스택 자료구조에 대해서 알고 있었다면 풀 수 있었을텐데 다음에 또 다시 풀어본다.
문제 접근 풀이
- 괄호가 "("이면 stack에 넣는다.
- 괄호가 ")"이면 전 괄호를 본다.
- 전 괄호가 "("이면 레이저이다. stack을 pop하고 count에 stack 배열 길이를 더해준다.
- 전 괄호가 ")"이면 쇠막대기의 끝이다. stack을 pop하고 count에 남은 쇠막대기를 더한다.
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('');
let stack = []; // 스택 초기화
let stickCnt = 0;
for (let i = 0 ; i<input.length ; i++) {
if(input[i] === '(') {
stack.push(input[i]);
} else {
if(input[i-1] === '(') {
// 레이저
stack.pop();
stickCnt += stack.length;
} else {
// 쇠막대기 끝
stack.pop();
stickCnt++;
}
}
}
console.log(stickCnt);