[Hackerrank] Data Structures - Stack 풀이
예문
https://www.hackerrank.com/challenges/java-stack/problem
해석
- Stack
- bracket - ‘[]’, ‘{}’, ‘()’ 처럼 열고 닫는게 한쌍이다.
- 쌍이 모두 맞으면 true 아니면 false 리턴
풀이
- 방법 1. Stack 사용
- push, pop 으로 최종적으로 stack에 남아있는게 있는지 확인
- 방법 2. 정규식, replaceAll 사용
- 쌍을 이루는 것은 모두 “” 공백으로 바꿈. 최종적으로 공백인지 아닌지 확인
- ”[][{}({})]”
- ”[()]”
- ”[]”
- ””
- 쌍을 이루는 것은 모두 “” 공백으로 바꿈. 최종적으로 공백인지 아닌지 확인
제약사항
코드
Stack 사용
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String input = sc.next();
Stack stack = new Stack();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if ('(' == c || '{' == c || '[' == c) {
stack.push(input);
} else {
if (stack.isEmpty()) {
stack.push(input);
break;
}
stack.pop();
}
}
if (stack.isEmpty()) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}
정규식, replaceAll 사용
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
while (input.length() != (input = input.replaceAll("\\(\\)|\\[\\]|\\{\\}", "")).length())
System.out.println(input.isEmpty());
}