[programmers] 올바른 괄호
in 기타 등등 on Coding Test
프로그래머스 올바른 괄호
문제: https://programmers.co.kr/learn/courses/30/lessons/12909
효율성 검토시 String 보다는 Char로
오늘도 기록하는 나의 실패 기록일지 !
.split("")
으로 입력을 받고 비교를 하는데 효율성이 모두 fail이 났다
질문하기를 참고하여 .charAt
바꾸고 비교를 하더니 모두 성공하였다.
역시 Reference type 보다는 Primitive Type 연산이 더 빠른 것 같다.
아래는 효율성 실패/성공한 두 케이스이며 정확성은 모두 success 이다!
아래는 효율성 fail이 된 코드이다!
boolean solution(String s) {
String[] brackets = s.split("");
Stack<String> stack = new Stack<>();
for (String bracket : brackets) {
if (stack.size() > brackets.length) {
return false;
}
if (!stack.isEmpty()) {
String last = stack.peek();
if (last.equals("(") && bracket.equals(")")) {
stack.pop(); // 뿌요뿌요 터트리기
continue;
}
stack.push(bracket);
continue;
}
stack.push(bracket);
}
out.println("stack = " + stack);
if (stack.isEmpty()) {
return true;
}
return false;
}
아래는 효율성 성공한 케이스 이다
boolean solution2(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char bracket = s.charAt(i);
if (!stack.isEmpty()) {
char last = stack.peek();
if (last == '(' && bracket == ')') {
stack.pop();
continue;
}
stack.push(bracket);
continue;
}
stack.push(bracket);
}
if(stack.isEmpty()) return true;
return false;
}