백준 10799 쇠막대기

bkboy·2022년 5월 12일
0

백준 초급

목록 보기
7/80

문제

제한 사항

한 줄에 쇠막대기와 레이저의 배치를 나타내는 괄호 표현이 공백없이 주어진다. 괄호 문자의 개수는 최대 100,000이다.

입출력 예

풀이

let s = require('fs').readFileSync('/dev/stdin').toString().trim();

function solution(s) {
  let answer = 0;
  let stack = [];
  for (let i = 0; i < s.length; i++) {
    if (s[i] === "(") stack.push("(");
    else {
      stack.pop(); // 먼저 없애지 않으면 레이저의 잔여부분이 카운팅 된다.
      if (s[i - 1] === "(") answer += stack.length; 
      // 레이저, 레이저를 맞으면 stack 수만큼 막대기가 추가됨
      else answer++; // 막대기의 끝, 막대기가 끝나면 한조각 추가
    }
  }
  return answer;
}
console.log(solution(s));
  • 괄호가 나오면 열에 아홉은 stack문제이다...
  • 여는 괄호를 만나면 무조건 push, 닫는 괄호를 만나면 그 앞 요소를 살펴보고 여는 괄호이면 레이저이고 아니면 막대기의 끝을 나타낸다.
  • 레이저를 만나면 스택에 쌓인 수만큼 더해주고 막대기의 끝을 만나면 그냥 1을 더해주면 된다.
profile
음악하는 개발자

0개의 댓글