원하는 것은 뭐든지
99클럽 코테 스터디 28일차 TIL , 괄호 회전하기 본문
반응형
문제
풀이
문제 설명에 영어는 괜히 헷갈리게만 한다.
이 문제는 괄호들이 주어지는데 문자열을 한 글자씩 옆으로 밀면서 올바른 괄호가 되는 경우를 찾아서 return 하면 된다.
왼쪽 끝으로 민 문자열은 오른쪽으로 가서 붙는다.
제출 1 - 정답
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
for(int i=0;i<s.length();i++){
StringBuilder sb = new StringBuilder();
String str = sb.append(s.substring(i,s.length()))
.append(s.substring(0,i))
.toString();
if(check(str)) answer++;
}
return answer;
}
private boolean check(String str){
Deque<Character> stack = new ArrayDeque<>();
char[] chrArr = str.toCharArray();
for(int i=0;i<chrArr.length;i++){
if(chrArr[i] == '[' || chrArr[i] == '{' || chrArr[i] == '('){
stack.push(chrArr[i]);
}else if(stack.peek() == null && (chrArr[i] == ']' || chrArr[i] == '}' || chrArr[i] == ')')){
return false;
}else{
if(chrArr[i] == ']' && stack.peek() != '[') return false;
if(chrArr[i] == '}' && stack.peek() != '{') return false;
if(chrArr[i] == ')' && stack.peek() != '(') return false;
stack.pop();
}
}
return stack.isEmpty();
}
}
StringBuilder를 사용해서 문자열을 만들어서 확인하는 방식으로 진행했다.
다른 정답
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
int n = s.length();
for (int i = 0; i < n; i++) {
if (isValid(s, i, n)) {
answer++;
}
}
return answer;
}
private boolean isValid(String s, int start, int n) {
Deque<Character> stack = new ArrayDeque<>();
for (int i = 0; i < n; i++) {
char c = s.charAt((start + i) % n);
if (c == '[' || c == '{' || c == '(') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if (c == ']' && top != '[') return false;
if (c == '}' && top != '{') return false;
if (c == ')' && top != '(') return false;
}
}
return stack.isEmpty();
}
}
여부를 확인 할 때 시작값을 받아서 활용한다.
조건문이 간결하게 되었다.
TIL
- 조건설정
반응형
'개발 > 문제풀이' 카테고리의 다른 글
99클럽 코테 스터디 30일차 TIL , Find Right Interval (0) | 2024.08.20 |
---|---|
99클럽 코테 스터디 29일차 TIL , Longest Increasing Subsequence (0) | 2024.08.20 |
99클럽 코테 스터디 27일차 TIL , 할인 행사 (0) | 2024.08.17 |
99클럽 코테 스터디 26일차 TIL , 달리기 경주 (0) | 2024.08.16 |
99클럽 코테 스터디 25일차 TIL , Evaluate Division (0) | 2024.08.16 |
Comments