Written by Jieun
Home
  • 전체 (129)
    • Git (1)
    • React, Next (57)
    • HTML & CSS (2)
    • JavaScript, TypeScript (24)
    • Node.js (11)
    • MongoDB (4)
    • AWS (2)
    • 코딩테스트, 알고리즘 (17)
    • etc (8)
    • 일상 (1)
블로그 내 검색

Written by Jieun

👩🏻‍💻 내 마음대로 Today I Learned

  • 코딩테스트, 알고리즘

    [프로그래머스] 올바른 괄호 (JS / Stack)

    2023. 8. 27.

    by. 지은이: 김지은

    728x90

     

    문제 설명

    https://school.programmers.co.kr/learn/courses/30/lessons/12909

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

    제한사항

    • 문자열 s의 길이 : 100,000 이하의 자연수
    • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

     

    입출력 예

    s answer
    "()()" true
    "(())()" true
    ")()(" false
    "(()(" false

     

    문제 풀이

    먼저, 이 문제를 쉽게 풀기 위해서 스택을 알아야한다.

     

    스택(Stack)이란?

    스택은 자료구조형으로 데이터를 일시적으로 저장하고, 빼는 후입선출 (LIFO, Last-In-First-Out) 원칙을 따른다.

    스택은 push()와 pop()으로 수행할 수 있는데 push는 스택에서 데이터를 추가하고 pop은 데이터를 제거한다.

    function solution(s){
        let stack = [];
        
        for (let i = 0; i < s.length; i++) {
            if(s[i] === '(') { // '(' 여는 괄호면 stack에 넣기
                stack.push(s[i])
            } else if(s[i] === ')') { // 닫는 괄호라면 stack 마지막이 여는 괄호일 때만 빼기
                if(stack.length !== 0 && stack[stack.length - 1] === '(') {
                    stack.pop()
                } else return false
            }
        }
        return stack.length === 0
    }

     

    for문을 돌리는데 '(' 여는 괄호라면 stack에 저장해 놓고 ')' 닫는 괄호라면 조건에 맞을 때만 pop()을 해준다.

    stack이 비어있지 않거나, stack의 마지막 괄호가 여는 괄호일 때(한 쌍이어야하니까)만 pop()으로 빼준다.

    stack이 다 비워졌다면 true를 그렇지 않다면 false를 반환한다.

    저작자표시 (새창열림)

    '코딩테스트, 알고리즘' 카테고리의 다른 글

    [백준] 1316번 그룹 단어 체커 (node.js)  (0) 2023.10.22
    [프로그래머스] 영어 끝말잇기 (JS)  (0) 2023.09.04
    [프로그래머스] 이진 변환 반복하기 (JS)  (0) 2023.08.26
    [프로그래머스] 이상한 문자 만들기 (JS)  (0) 2023.08.23
    [프로그래머스] 문자열 내 마음대로 정렬하기 (JS)  (0) 2023.08.19

    댓글

    관련글

    • [백준] 1316번 그룹 단어 체커 (node.js) 2023.10.22
    • [프로그래머스] 영어 끝말잇기 (JS) 2023.09.04
    • [프로그래머스] 이진 변환 반복하기 (JS) 2023.08.26
    • [프로그래머스] 이상한 문자 만들기 (JS) 2023.08.23
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
지은이: 김지은

티스토리툴바