SWEA1218 괄호 짝짓기
스택을 이용해 닫는 괄호 값이 들어오면 pop()
을 했을 때 나오는 괄호와 짝지어지면 된다.
import java.util.Stack;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Solution {
static BufferedReader br;
static BufferedWriter bw;
static StringTokenizer st;
static boolean Answer;
static Stack<Character> stk;
static char[] input;
static void PushnPop() {
for (int i = 0; i < input.length; i++) {
if(input[i] == '(' || input[i] == '[' || input[i] == '{' ||input[i] == '<') {
stk.push(input[i]);
}else {
if(stk.isEmpty()) {
Answer = false;
return;
}
if(input[i] == ')') {
if(stk.pop() != '(') {
Answer = false;
return;
}
}else if(input[i] == '}') {
if(stk.pop() != '{') {
Answer = false;
return;
}
}else if(input[i] == ']') {
if(stk.pop() != '[') {
Answer = false;
return;
}
}else if(input[i] == '>') {
if(stk.pop() != '<') {
Answer = false;
return;
}
}
}
}
if(!stk.isEmpty()) {
Answer = false;
}
}
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = 10;
for (int tc = 1; tc <= T; tc++) {
Answer = true;
stk = new Stack<>();
br.readLine(); // 값 개수 버리기.
input = br.readLine().toCharArray();
PushnPop();
bw.write(String.format("#%d ", tc));
if (Answer) {
bw.write("1\n");
} else {
bw.write("0\n");
}
}
bw.flush();
bw.close();
}
}
Author And Source
이 문제에 관하여(SWEA1218 괄호 짝짓기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mraz0210/SWEA1218-괄호-짝짓기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)