새소식

알고리즘 문제풀이/프로그래머스

[스택] 프로그래머스 level2 올바른 괄호 c++, java 풀이

  • -

프로그래머스 올바른 괄호 자바(java) 풀이

문제 정리

  1. 괄호가 올바로 짝지어져 있다: '('문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫힌다
  2. 문자열 s가 주어졌을때 올바른 괄호 문자열인지 아닌지 판별하여라
  3. 문자열의 길이는 최대 100,000
  4. 문자열 s는 '(' ')' 만으로 이루어져 있다.


힙, 우선순위 큐

이 문제는 stack을 이용하면 쉽게 구현할 수 있습니다.
이와 비슷한 문제가 이번 카카오 코테에도 나왔습니다. 그렇기테때문애 확실히 이해하는게 중요합니다.

  1. 주어진 문자열을 캐릭터(문자) 배열로 변환합니다
  2. for문을 돌며 문자를 검사합니다
  3. 만약 '(' 문자라면 stack에 넣습니다
  4. ')'문자라면 stack이 비어있는지 그렇지 않은지 검사합니다. 비어있다면 ')' 문자가 하나 더 나온 경우입니다. 즉, 짝이 맞지 않습니다
    예를들어 ()) 였다면 이미 2번째 문자인 ')'를 만났을때 stack은 비게 되기 때문입니다.
  5. 만약 ')' 문자를 만났는데 비어있지 않다면 stack에서 문자를 하나 pop 합니다. 이는 짝을 맞춰가는 과정입니다.
    예를 들어 stack 에는 '('문자가 하나 있습니다. 그때 ')' 문자가 들어왔다면 짝이 맞기 때문에 stack에서 뺍니다.
  6. 이 과정을 반복했는데 stack이 비어있지 않다면 올바르지 않은 문자열 입니다.
    예를들어 주어진 문자열이 '(((('인 경우 stack에 쌓이기만 하고 그대로 남습니다. 맞는 짝이 없기 때문입니다. 이 경우도 올바르지 않은 문자열로 처리합니다.


프로그래머스 올바른 괄호 c++ 코드



프로그래머스 올바른 괄호 java 코드


Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.