happy coding
[java] 4949. 균형잡힌 세상 본문
이전 괄호 문제에서 업글업글 버전이다. 타인의 코드를 참고해서 해결했다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String input;
while(true) {
input = br.readLine();
if(input.equals(".")) { // 종료 조건문
break;
}
sb.append(testCase(input)).append('\n');
}
System.out.println(sb);
}
public static String testCase(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i); // i 번째 문자
// 여는 괄호일 경우 스택에 push
if(c == '(' || c == '[') {
stack.push(c);
}
// 닫는 소괄호 일 경우
else if(c == ')') {
// 스택이 비어있거나 pop할 원소가 소괄호랑 매칭이 안되는 경우
if(stack.empty() || stack.peek() != '(') {
return "no";
}
else {
stack.pop();
}
}
else if(c == ']') {
// 스택이 비어있거나 pop할 원소가 대괄호랑 매칭이 안되는 경우
if(stack.empty() || stack.peek() != '[') {
return "no";
}
else {
stack.pop();
}
}
// 불필요한건 무시
}
if(stack.empty()) {
return "yes";
}
else {
return "no";
}
}
}
그리고 매번 느끼는 건데 가변적인 문자열로 계속 받을까보다..그냥.. 테케 수가 주어지지 않은 경우 StringBuilder로 넘어가는데 좀 매번 돌아가는 느낌이 들기도 하고 sb쓰는 것도 익숙하지도 않은 것 같아서 찾아보게 된다.
'coding study > baekjoon' 카테고리의 다른 글
[java] 25206. 너의 평점은 (0) | 2023.08.18 |
---|---|
[java] 1874. 스택 수열 (0) | 2023.08.16 |
[java] 9012. 괄호 (0) | 2023.08.15 |
[java] 10828. 스택 (0) | 2023.08.15 |
[java] 10773. 제로 (0) | 2023.08.15 |
Comments