[코딩테스트] #2. 스택/큐
2024. 2. 28. 21:55ㆍ개인 공부/코딩테스트
Description
올바르게 쌍을 이룬 괄호의 정의는 '(')' 문자로 열었을 경우 '' 문자로 닫아야 한다는 것을 의미합니다.
- 예시
"()()" 또는 "(())()"는 올바른 괄호입니다.
")()(" 또는"(()("는 잘못된 괄호입니다.
'(' 또는 ' ) '로만 구성된 문자열이 주어지면 문자열이 올바른 괄호이면 true를 반환하고 그렇지 않으면 false를 반환하는
함수를 완성합니다.
Constraints
- 문자열 길이 : 100,000 미만의 자연수
- 문자열은 '(' 또는 ')'로만 구성됩니다.
Example
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
풀이 요약
스택이나 큐를 이용하여 해결해야 하는 문제로 일반적인 for문등을 사용하여 해결하게 되면 시간 초과로 실패하게 된다.
나는 Java의 Stack클래스를 활용하여 주어진 문자열을 포문을 통해 체크하며 '(' 또는 ')'가 나올떄마다 if문을 사용하여 Stack에 push(), pop()함수를 사용하여 올바른 괄호식이 되었는지 확인하여 해결했다.
풀이 소스코드
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = false;
Stack<Character> stack = new Stack<Character>(); // 큐에 들어온 값을 확인하여 결과를 도출하기 위한 stack
for(int i = 0; i<s.length();i++){
if(i==0&&s.charAt(i)==')'){
stack.push(s.charAt(i));
break;
}
if(s.charAt(i)=='('){
stack.push(s.charAt(i));
}else if(s.charAt(i)==')'){
if(stack.isEmpty()){
stack.push(s.charAt(i));
break;
}
stack.pop();
}
}
if(stack.isEmpty())
answer = true;
return answer;
}
}
'개인 공부 > 코딩테스트' 카테고리의 다른 글
[코딩테스트]#6. 최소직사각형 구하기 (0) | 2024.03.04 |
---|---|
[코딩테스트]#5. 삼각형의 완성조건(2) (0) | 2024.03.03 |
[코딩테스트]#4. 조건에 맞는 개발자 찾기(Database sql) (0) | 2024.03.01 |
[코딩테스트]#3. 컨트롤 제트 (1) | 2024.02.29 |
[코딩테스트] #1. 오픈채팅방(java) (0) | 2024.02.27 |