공부기록
괄호변환 본문
- 문제
https://programmers.co.kr/learn/courses/30/lessons/60058
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를
programmers.co.kr
- 코드
더보기
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;
}
}
- 피드백
- 지문 중 '나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙입니다.' 를 문자열을 뒤집어 붙이는 것으로 착각하였다.
- 행동의 대상이 무엇인지 정확하게 파악하자.