728x90
https://www.acmicpc.net/problem/4949
음 .. 먼저 조건에 맞게 코드를 짜서 출력대로 잘나와서 제출했는데 20%에서 계속 틀렸다.
예외가 뭔지를 모르겠다..
다른 블로그를 한번 참고해보고 다시한번 풀어보았는데, 코드 그대로 따라가면서 볼때는 비슷해보이는데
왜 틀렸는지 잘모르겠다 ㅠㅠ 어떤 조건에서 틀린걸까..
질문에 올려보고 답이 오면 다시한번 대입해봐야겠다.
실패코드
package BAEKJOON.Silver.Ⅳ;
import java.util.Scanner;
import java.util.Stack;
public class NO4949X {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Character> stack = new Stack<>();
while (true) {
stack.clear();
String str = sc.nextLine();
// . 만 입력되면 입력종료
if (str.equals(".")) {
break;
}
for (int i = 0; i < str.length(); i++) {
if ((stack.isEmpty() && str.charAt(i) == ')') || (stack.isEmpty() && str.charAt(i) == ']')) {
stack.push(str.charAt(i));
break;
} else if (str.charAt(i) == '(' || str.charAt(i) == '[') {
stack.push(str.charAt(i));
} else if (str.charAt(i) == ')' && stack.peek() == '(') {
stack.pop();
} else if (str.charAt(i) == ']' && stack.peek() == '[') {
stack.pop();
}
}
if(stack.isEmpty()) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
}
성공코드
package BAEKJOON.Silver.Ⅳ;
import java.util.Scanner;
import java.util.Stack;
public class NO4949 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Character> stack = new Stack<>();
while (true) {
stack.clear();
String str = sc.nextLine();
// . 만 입력되면 입력종료
if (str.equals(".")) {
break;
}
for (int i = 0; i < str.length(); i++) {
// ( , [ 가 입력되면 stack 에 추가
if (str.charAt(i) == '(' || str.charAt(i) == '[') {
stack.push(str.charAt(i));
// ) , ] 가 입력되었는데
} else if (str.charAt(i) == ')' || str.charAt(i) == ']') {
// 스택이 비어있거나, 이전 스택의 값이 ( 가 아닌데 ) 가 들어오거나
if (stack.isEmpty() || (stack.peek() != '(' && str.charAt(i) == ')')
// 이전 스택의 값이 [ 가 아닌데 ] 가 들어오면
|| (stack.peek() != '[' && str.charAt(i) == ']')) {
//stack 에 추가하고 for 문 종료
stack.push(str.charAt(i));
break;
} else {
// 위 조건이 아니라면 pop
stack.pop();
}
}
}
// 스택이 비어있으면 yes 남아있으면 no
if (stack.isEmpty()) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
}
728x90
'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글
백준 JAVA 1977 프린터 큐 (0) | 2022.08.12 |
---|---|
백준 JAVA 1874 스택 수열 (0) | 2022.08.12 |
백준 JAVA 11651 좌표 정렬하기2 (0) | 2022.08.11 |
백준 JAVA 11650 좌표 정렬하기 (0) | 2022.08.11 |
백준 10816 JAVA 숫자 카드2 (0) | 2022.08.10 |
댓글