-
https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%204949
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 예전에 풀어본 괄호 문제 유형인데
문자열이 주어질 때 특정 조건을 만족하면 yes 아니면 no를 출력하는 문제다
조건은 아래와 같다.
모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다.
모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다.
모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다.
모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다.
짝을 이루는 두 괄호가 있을 때, 그 사이에 있는 문자열도 균형이 잡혀야 한다.해당 문제는 스택을 이용했고 문제를 쉽게 이해하면 괄호는 짝지어지면 되며,
문자에 대해서는 체크를 따로 안 해줘도 된다.
먼저 무한 반복으로 문자열을 입력받고 문자열이. 과 같으면 반복문을 멈추고
그렇지 않으면 입력 문자열을 char형 배열에 쪼개어 넣어준 뒤
배열 크기만큼 반복해서 여는 괄호 ( [일 경우 스택에 넣어주고
) ] 일경우 스택이 비었거나 스택에서 빼낸 데이터가 짝이 안 맞으면 실패하는 식으로
장성했으며 최종. 이 들어왔을 때 만약 스택이 비지 않았으면 실패를 체크해주어야 한다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 1406 에디터 JAVA (0) 2021.11.28 Baekjoon 2776 암기왕 JAVA (0) 2021.11.27 Baekjoon 1026 보물 JAVA (0) 2021.11.25 Baekjoon 1946 신입 사원 JAVA (0) 2021.11.23 Baekjoon 10773 제로 JAVA (0) 2021.11.22 댓글