이거랑 비슷한 맥락으로 풀면 될 줄 알았으나 Stack 빼고는 유사하진 않았다...★
스위치문 대신에 이렇게 else 때리는 것이 더 효율적임!
+ 0 length 처리는 할 것. (1로 return 필요)
package codility;
import java.util.Stack;
public class Brackets_221224 {
public static void main(String[] args) {
//String S = "{[()()]}";
String S = "";
solution(S);
}
public static int solution(String S) {
// Implement your solution here
if(S.length() <= 0){
return 1;
}
Stack<Character> stack = new Stack<>();
char chr = S.charAt(0);
if(chr == ')' || chr == ']' || chr == '}'){
//시작이 잘못되었으면 종료
return 0;
}
for(char c : S.toCharArray()){
if(c == '(' || c == '{' || c == '['){
stack.push(c);;;
}else{
if(stack.empty()){
//비었으면 종료
return 0;
}else{
chr = stack.pop();
if(c == ')' && chr != '('){
//System.out.println(c + " !!");
return 0;
}else if(c == ']' && chr != '['){
//System.out.println(c + " !!!");
return 0;
}else if(c == '}' && chr != '{'){
//System.out.println(c + " !!!!");
return 0;
}
}
}
}
return stack.isEmpty() ? 1 : 0;
}
}
댓글
댓글 쓰기