알고리즘
[hackerRank] JAVA Stack
91cm
2020. 10. 26. 23:19
문제
www.hackerrank.com/challenges/java-stack/problem
접근방법
- 괄호의 짝이 맞으면 되는 문제
- stack의 pop을 이해한다면 충분히 쉬운 문제
- 좀 더 코드를 줄여보자면 push하는 부분을 else로 빼서하는 것도 코드를 줄일 수 있음
개인적으로 push하는 부분을 '(', '{', '[' 를 명확하게 써주는게 더좋은거 같아서 코드를 풀어서 씀
코드
package com.cm;
import java.util.Scanner;
import java.util.Stack;
/**
* https://www.hackerrank.com/challenges/java-stack/problem
*/
public class JavaStack {
public JavaStack() {
solution();
}
public void solution(){
Scanner sc = new Scanner(System.in);
Stack<String> stack = new Stack<>();
boolean result = true;
while (sc.hasNext()) {
String input=sc.next();
if(input.length()%2>0){ // 괄호의 개수는 짝수여야 함
result = false;
}else{
String[] arr = input.split("");
for (int i=0 ; i<arr.length ;i++){
if(arr[i].equals("(")) {
stack.push(arr[i]);
}else if(arr[i].equals("{")) {
stack.push(arr[i]);
}else if(arr[i].equals("[")) {
stack.push(arr[i]);
}else if(arr[i].equals(")")){
if(!stack.pop().equals("(")){
result = false;
break;
}
}else if(arr[i].equals("}")){
if(!stack.pop().equals("{")){
result = false;
break;
}
}else if(arr[i].equals("]")){
if(!stack.pop().equals("[")){
result = false;
break;
}
}
}
}
System.out.println(result);
}
}
}