728x90
SMALL
문제 이해
- (),{},[] 세종류의 괄호로 구성된 문자열이 존재하는데 문자열을 회전시켰을때 괄호가 올바른 괄호 문자열이 몇번인지 구하여라
- 문자열 회전 문제는 "[](){}" + "[](){}" 이런식으로 두개의 문자열을 합하여 index 0부터 문자열 길이만큼 비교하고 index 값을 올려서 반복 비교한다.
- 괄호의 완성은 "{()}" 이와 같이 괄호를 열었으면 제대로 닫아야 한다. "{(})" 이런 식의 괄호는 열고 닫았지만 닫는 순서가 잘못되었다.
- 문자열의 값을 스택에 한문자씩 집어넣고 한문자씩 꺼내면서 "()", "{}","[]" 이와 같이 스택의 마지막값이 지금 문자열의 값의 열고 닫는 괄호가 맞는지 비교한다.
- 스택에서 하나씩 꺼내 완성된 괄호가 모두 존재 하면 스택에는 아무런 값이 미존재 해야한다.
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String[] temp = (s + s).split("");
for(int i = 0; i<s.length(); i++){
Stack<String> stack = new Stack<>();
for(int j = i; j<s.length()+i; j++){
if(!stack.isEmpty()){
if((stack.peek().charAt(0) == '(' && temp[j].charAt(0) == ')')
|| (stack.peek().charAt(0) == '{' && temp[j].charAt(0) == '}')
|| (stack.peek().charAt(0) == '[' && temp[j].charAt(0) == ']')){
stack.pop();
}else{
stack.push(temp[j]);
}
}else{
stack.push(temp[j]);
}
}
if(stack.size() == 0){
answer++;
}
}
return answer;
}
}
728x90
LIST
'자바 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 기능개발 - Java(자바) (1) | 2024.03.26 |
---|---|
[프로그래머스] 할인 행사 - Java(자바) (0) | 2024.03.26 |
[프로그래머스] 구명보트 - Java(자바) (0) | 2024.03.25 |
[프로그래머스] 영어 끝말잇기 - Java(자바) (0) | 2024.03.25 |
[프로그래머스] 점프와 순간 이동 - Java(자바) (0) | 2024.03.25 |