728x90
반응형



https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
1. 구현할 방식
"(" 가 입력된다면 Stack에 데이터를 삽입하고 ")" 이 입력된다면 Stack에 저장된 데이터를 한 개 씩 pop() 한다.
이때 Stack에 아무런 데이터가 없는 상태에서 ")"이 입력된다면 VPS가 아예 불가능하기 때문에 NO를 출력한다.
2. 코드 구현 부분
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int cnt = sc.nextInt();
sc.nextLine(); // 엔터키 삭제하는 효과
ArrayList<String> inputData = new ArrayList<>(); // 여러 개를 입력받아 inputData 배열에 저장
for(int i =0; i<cnt ; i++) { // 한줄씩 입력받아 배열에 저장
String data = sc.nextLine();
inputData.add(data);
}
Stack<String> stack = new Stack<>(); // Stack 객체 생성
for (int j=0; j<inputData.size(); j++) { // 입력받은 문자열을 순서대로 가져온다
for(int i=0; i<inputData.get(j).length(); i++) { // i번째로 입력받은 수에서 한글자씩 분리하여 a배열에 저장
String[] a = inputData.get(j).split("");
if(a[i].equals("(")) { //"("이 입력되면 stack에 데이터 추가
stack.push(a[i]);
} else if (a[i].equals(")")) { // ")"이 입력되었을 때
if (stack.size() > 0) { // stack에 데이터가 존재한다면
stack.pop();
} else { // Stack이 비어있으므로 "-1" 삽입 후 반복문 탈출
stack.push("-1");
break;
}
}
}
if (stack.isEmpty()) {
System.out.println("YES");
} else {
System.out.println("NO");
}
stack.clear();
}
}
}반응형
'Coding Test Study > Backjoon' 카테고리의 다른 글
| [Coding/Backjoon] 계산기 프로그램 (0) | 2023.11.27 |
|---|---|
| [Coding/Backjoon] 2830번 행성 X3 (0) | 2023.11.20 |
| [Coding/Backjoon] 10807번 개수 세기 (4) | 2023.11.20 |
| [Coding/Backjoon] 1021번 회전하는 큐 (0) | 2023.11.19 |
| [Coding/Backjoon] 25556번 포스택 (0) | 2023.11.14 |