프로그래머스 올바른 괄호 자바(java) 풀이
문제 정리
- 괄호가 올바로 짝지어져 있다: '('문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫힌다
- 문자열 s가 주어졌을때 올바른 괄호 문자열인지 아닌지 판별하여라
- 문자열의 길이는 최대 100,000
- 문자열 s는 '(' ')' 만으로 이루어져 있다.
힙, 우선순위 큐
이 문제는 stack을 이용하면 쉽게 구현할 수 있습니다.
이와 비슷한 문제가 이번 카카오 코테에도 나왔습니다. 그렇기테때문애 확실히 이해하는게 중요합니다.
- 주어진 문자열을 캐릭터(문자) 배열로 변환합니다
- for문을 돌며 문자를 검사합니다
- 만약 '(' 문자라면 stack에 넣습니다
- ')'문자라면 stack이 비어있는지 그렇지 않은지 검사합니다. 비어있다면 ')' 문자가 하나 더 나온 경우입니다. 즉, 짝이 맞지 않습니다
예를들어 ()) 였다면 이미 2번째 문자인 ')'를 만났을때 stack은 비게 되기 때문입니다.
- 만약 ')' 문자를 만났는데 비어있지 않다면 stack에서 문자를 하나 pop 합니다. 이는 짝을 맞춰가는 과정입니다.
예를 들어 stack 에는 '('문자가 하나 있습니다. 그때 ')' 문자가 들어왔다면 짝이 맞기 때문에 stack에서 뺍니다.
- 이 과정을 반복했는데 stack이 비어있지 않다면 올바르지 않은 문자열 입니다.
예를들어 주어진 문자열이 '(((('인 경우 stack에 쌓이기만 하고 그대로 남습니다. 맞는 짝이 없기 때문입니다. 이 경우도 올바르지 않은 문자열로 처리합니다.
프로그래머스 올바른 괄호 c++ 코드
프로그래머스 올바른 괄호 java 코드