csct3434
[level 2] 괄호 변환 - 60058 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.Stack;
class Solution {
public String solution(String p) {
// Phase 1
if (p.isEmpty()) {
return p;
}
// Phase 2
int idx = 0, count = 0;
while (idx < p.length()) {
count += (p.charAt(idx++) == '(') ? 1 : -1;
if (count == 0) {
break;
}
}
String u = p.substring(0, idx);
String v = p.substring(idx);
// Phase 3
if (check(u)) {
return u + solution(v);
}
// Phase 4
return "(" + solution(v) + ")" + flip(u.substring(1, u.length() - 1));
}
private boolean check(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == ')') {
if (stack.isEmpty()) {
return false;
}
stack.pop();
continue;
}
stack.push('(');
}
return stack.isEmpty();
}
private String flip(String s) {
StringBuilder result = new StringBuilder();
for (char c : s.toCharArray()) {
if (c == '(') {
result.append(')');
continue;
}
result.append('(');
}
return result.toString();
}
}
'프로그래머스' 카테고리의 다른 글
[level 2] [카카오 인턴] 수식 최대화 - 67257 (0) | 2024.02.29 |
---|---|
[level 2] 튜플 - 64065 (0) | 2024.02.29 |
[level 2] 문자열 압축 - 60057 (0) | 2024.02.29 |
[level 2] 방문 길이 - 49994 (1) | 2024.02.29 |
[level 2] 스킬트리 - 49993 (0) | 2024.02.29 |