728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14eWb6AAkCFAYD
그냥 스택을 응용하는 기본 문제일 뿐이지만, 아스키코드를 활용해서 코드를 간단하게 짤 수 있어서 적어봤다.
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
TC: for (int tc = 1; tc <= 10; tc++) {
int l = Integer.parseInt(br.readLine());
String s = br.readLine();
Stack<Character> stack = new Stack<>();
System.out.print("#" + tc + " ");
for (int i = 0; i < l; i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{' || c == '<') {
// 여는 괄호
stack.push(c);
} else {
// 닫는 괄호: 아스키코드번호 차이 2이내여야함
if (Math.abs(c - stack.peek()) > 2) {
System.out.println(0);
continue TC;
} else {
// 유효한경우
stack.pop();
}
}
}
if (stack.isEmpty())
System.out.println(1);
else
System.out.println(0);
} // end TC
} // end main
} // end Class
'플밍 > 문제풀이' 카테고리의 다른 글
[Java] BOJ14567, 백준 - 선수과목 (Prerequisite) (0) | 2022.02.14 |
---|---|
[Java] BOJ16973, 백준 - 직사각형 탈출 (0) | 2022.02.09 |
[프로그래머스, Java] 카카오 인턴 - 키패드 누르기 (0) | 2022.02.08 |
[Java] BOJ2573, 백준 - 빙산 (0) | 2022.02.08 |
[Java] BOJ17141, 백준 - 연구소2 (0) | 2022.02.08 |