728x90
애초에 입력받은 값의 길이가 홀수이면 짝이 맞을리가 없으니까
길이가 짝수인 것만 살펴본다.
result는 몇쌍이 있는지 나타낸다.
14개가 있으면 7쌍이어야 하므로 result == len / 2로 조건문을 달았다.
그렇게 스택을 다 비우고 쌍이 맞아야 YES를 출력리스트에 넣는다.
출력은 리스트를 이용해 한번에 한다.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class bj9012 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
List<String> list = new ArrayList<>();
Stack<Character> stack = new Stack<>();
StringBuffer sb = new StringBuffer();
sc.nextLine();
for(int i = 0; i < num; i++) {
int len = 0;
int result = 0;
sb.append(sc.nextLine());
len = sb.length();
if(len % 2 == 0) {
for(int j = 0; j < len; j++) {
if(sb.charAt(j) == ')') {
if(stack.isEmpty() == false && stack.peek().equals('(')) {
stack.pop();
result++;
}
}
else
stack.push(sb.charAt(j));
}
if(stack.isEmpty() == true && result == len/2)
list.add("YES");
else list.add("NO");
}
else list.add("NO");
sb.setLength(0);
while(stack.isEmpty() == false)
stack.pop();
}
for(String data : list){
System.out.println(data);
}
sc.close();
}
}
이건 자료구조 수업들었을 때 스택부분에서 대강 말씀해주시고 지나간 문제인데
그때의 수도코드는 딱히 기억나지않아서
일단 내가 풀 수 있는대로 풀었다.
어쩌다보니 코드가 되게 길어졌다.
/0106
'programming > 알고리즘 풀이' 카테고리의 다른 글
[백준(Baekjoon)/JAVA] 2606. 바이러스 (0) | 2021.01.16 |
---|---|
[백준(Baekjoon)/JAVA] 2630. 색종이 만들기 (0) | 2021.01.10 |
백준(Baekjoon)_5586번 문제풀이 (2) | 2020.03.02 |
백준(Baekjoon)_11722번 문제풀이 (0) | 2020.02.05 |
백준(Baekjoon)_2167번 문제풀이 (0) | 2020.01.28 |
댓글