공부기록
괄호변환 본문
- 문제
https://programmers.co.kr/learn/courses/30/lessons/60058
- 코드
더보기
import java.util.*;
class Solution {
private boolean isRight(String str){
Stack<Character> s = new Stack<>();
for(int i=0; i<str.length(); i++){
char curC = str.charAt(i);
if(curC == '(')
s.push(curC);
else if(s.size() == 0){
return false;
}else{
s.pop();
}
}
if(s.size() != 0)
return false;
else
return true;
}
public String solution(String p) {
String answer = "";
if(p.length() == 0)
return answer;
int leftCount = 0;
int rightCount = 0;
for(int i=0; i<p.length(); i++){
if(p.charAt(i) == '('){
leftCount++;
}else{
rightCount++;
}
if(leftCount == rightCount){
String u = "";
String v = "";
for(int j=0; j<=i; j++){
u += p.charAt(j);
}
for(int j=i+1; j<p.length(); j++){
v += p.charAt(j);
}
if(this.isRight(u)){
answer = u + this.solution(v);
}else{
answer += "(";
answer += this.solution(v);
answer += ")";
String tmp = "";
for(int j=1; j < u.length()-1; j++){
if(u.charAt(j) == '(')
tmp += ")";
else
tmp += "(";
}
answer += tmp;
}
break;
}
}
return answer;
}
}
- 피드백
- 지문 중 '나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙입니다.' 를 문자열을 뒤집어 붙이는 것으로 착각하였다.
- 행동의 대상이 무엇인지 정확하게 파악하자.