공부기록

괄호변환 본문

코테/프로그래머스

괄호변환

코타쿠 2021. 5. 3. 14:44
  • 문제

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;
    }
}
  • 피드백
    • 지문 중 '나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙입니다.' 를 문자열을 뒤집어 붙이는 것으로 착각하였다.
    • 행동의 대상이 무엇인지 정확하게 파악하자.

'코테 > 프로그래머스' 카테고리의 다른 글

임시  (0) 2021.05.05
경주로 건설  (0) 2021.05.04
보석 쇼핑  (0) 2021.04.16
징검다리 건너기  (0) 2021.04.16
길 찾기 게임  (0) 2021.04.16