728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/76502
Stack을 이용하면 쉽게 풀 수 있다.
마지막에 Stack이 비어있는지 아닌지 확인해 줘야한다.
package bracketRotate;
/**
* https://programmers.co.kr/learn/courses/30/lessons/765023
*
* 괄호 회전하기
*
* Stack을 이용하여 풀면 쉽게 풀린다.
*
* 마지막에 stack 안에 값이 있는지 확인해주어야 한다.
*/
import java.util.Stack;
public class BracketRotate {
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.solution("[](){}"));
System.out.println(s.solution("}]()[{"));
System.out.println(s.solution("[)(]"));
System.out.println(s.solution("}}}"));
}
}
class Solution {
public int solution(String s) {
int answer = 0;
Stack<Character> stack = null;
for (int i = 0; i < s.length(); i++) {
String temp = i == 0 ? s : s.substring(i) + s.substring(0, i);
stack = new Stack<Character>();
boolean isRight = false;
for(char ch : temp.toCharArray()) {
if(ch == '(' || ch == '{' || ch == '[') stack.push(ch);
else {
if(stack.size() == 0) {
isRight = false;
break;
}
char tmpCh = stack.pop();
if((tmpCh == '(' && ch == ')')
|| (tmpCh == '{' && ch == '}')
|| (tmpCh == '[' && ch == ']')) {
isRight = true;
}
}
}
if(isRight) answer++;
}
if(!stack.isEmpty()) return 0;
return answer;
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/java] 소수찾기 - 백트래킹 사용(예제 코드 포함) (0) | 2022.03.04 |
---|---|
[프로그래머스/java] 가장 큰 수 - Arrays.sort Comparator Override (0) | 2022.03.02 |
[프로그래머스/java] 카카오프렌즈 컬러링북 - 카카오 기출 (0) | 2022.02.26 |
[프로그래머스/java] 게임 맵 최단거리 - BFS 사용 (0) | 2022.02.25 |
[프로그래머스/java] 멀쩡한 사각형 - 유클리드 호제법 사용 (0) | 2022.02.25 |
댓글