Codility Java Brackets
업데이트:
문제
코드
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Stack;
class Solution {
public int solution(String S) {
Stack<Character> stack = new Stack<>();
for (char c : S.toCharArray()) {
switch (c) {
case '(': case '{': case '[':
stack.push(c);
break;
case ')':
if (stack.size() == 0 || stack.pop() != '(') {
return 0;
}
break;
case '}':
if (stack.size() == 0 || stack.pop() != '{') {
return 0;
}
break;
case ']':
if (stack.size() == 0 || stack.pop() != '[') {
return 0;
}
break;
}
}
return stack.isEmpty() ? 1 : 0;
}
}
설명
- 괄호 문자열을 임시 저장하기 위한 저장소로 Stack을 사용한다.
- 괄호 문자열의 시작 문자열(‘(‘, ‘{‘, ‘[‘)이 나올 경우 변수 stack에 저장한다.
- 괄호 문자열의 종료 문자열(‘)’, ‘}’, ‘]’)은 반드시 시작 문자열 이후에 나와야 하므로, 변수 stack의 크기가 0이거나 시작 문자열이 아닌 경우는 0을 주어진 문제의 결과로 반환한다.
- 반복이 완료되면 변수 stack이 비어있는지를 확인하여 비어있으면 1을, 비어있지 않으면 0을 주어진 문제의 결과로 반환한다.
결과
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기