-
프로그래머스 올바른 괄호개발/코딩테스트 2024. 9. 13. 16:34
문제
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
문제 분석
( 입장에서 ) 올 경우 가능
( 입장에서 ( 가 올 경우 )가 2개 있으면 통과
앞이 ( 이고 뒤가 ) 인 경우 ( 삭제
앞이 ( 이고 뒤가 ( 인 경우 보류
stack의 경우 나중에 들어간 것이 먼저 나가는 구조라 해당 값을 이용 하면 됩니다
예를 들어 stack에 ( ( 들어 간 후 ) 값과 비교하여 한쌍이면 두번째 ( 를 제거합니다 그리고 다시 첫번째 ( 와 )를 비교한 후 ( 를 제거하면
stack이 비게 되고 그 경우 true를 리턴 하면 됩니다
import java.util.*; boolean solution(String s) { Stack<Character> stack = new Stack<>(); for(int i=0; i < s.length(); i ++){ if(stack.isEmpty()){ stack.push(s.charAt(i)); continue; } if(stack.peek()=='(' && s.charAt(i) == ')'){ stack.pop(); }else{ stack.push(s.charAt(i)); } } return stack.isEmpty(); }
자료구조 : stack 이용
'개발 > 코딩테스트' 카테고리의 다른 글
프로그래머스 개인정보 수집 유효기간 (0) 2024.09.19 프로그래머스 최솟값 만들기 (1) 2024.09.14 프로그래머스 여행경로 (1) 2024.09.12 프로그래머스 단어변환 (0) 2024.09.10 프로그래머스 게임맵 최단거리 (1) 2024.09.09