Codility 문제 - Brackets
문자열 S를 구성하는 각각의 문자들이 서로 중첩되어 있을 경우 1을, 서로 중첩되어 있지 않을 경우 0을 반환
■ 문제 풀이
1) 문풀 설명
- "(", "{", "[", "]", "}", ")"로만 구성된 문자열이 있음
- 문자열의 길이(N)의 범위는 [0...200,000]
- 주어진 문자열의 각 문자가 서로 중첩이 될 경우 1을, 중첩되지 않는 경우가 있을 경우 0을 반환
2) 예제
String S = "{[()()]}" 이 주어진 경우,
"("는 ")"와 중첩, "["는 "]"와 중첩, "{"은 "}"와 중첩하므로 결과 값 1을 반환
String S = "([){}]" 이 주어진 경우에는 중첩하지 않은 경우가 발생하여 0을 반환
3) 힌트
Stack을 사용
import java.util.Stack;
public class Brackets {
static int solution(String S){
char[] chars = S.toCharArray();
Stack stack = new Stack();
for (int i=0; i<chars.length; i++){
if (stack.isEmpty()){
stack.push(chars[i]);
}else {
String peek = stack.peek().toString();
if(peek.equals("(")){
if(chars[i] == ')'){
stack.pop();
}else{
stack.push(chars[i]);
}
}else if(peek.equals("{") ){
if(chars[i] == '}'){
stack.pop();
}else{
stack.push(chars[i]);
}
}else if(peek.equals("[") ){
if(chars[i] == ']'){
stack.pop();
}else{
stack.push(chars[i]);
}
}
}
}
return stack.isEmpty() ? 1:0;
}
public static void main(String[] args) {
String S = "{([)]}";
System.out.println("brackets 결과 : " + solution(S));
}
}
'CodingTest Practice' 카테고리의 다른 글
[programmers] 로또의 최고 순위와 최저 순위 (0) | 2022.01.11 |
---|---|
[Codility 문풀] Nesting (0) | 2022.01.10 |
[codingTest] anagram (0) | 2022.01.07 |
[Codility 문풀] MaxProductOfThree (0) | 2022.01.06 |
[Codility 문풀] Distinct (0) | 2022.01.06 |