본문 바로가기
Algorithm/Programmers

[Programmers] 괄호 변환

by J4J 2021. 3. 18.
300x250
반응형

문제

 

2020 KAKAO BLIND RECRUITMENT > 괄호 변환

 

코딩테스트 연습 - 괄호 변환

카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를

programmers.co.kr

 

 

아이디어

 

이 문제의 아이디어는 문제에서 제공해주고 있습니다.

 

문제에서 설명하는 상황에 맞게 코드를 구현하기만 하면 끝인 문제입니다.

 

굳이 하나를 선택해보자면 재귀 함수를 이용해야 된다고 말할 수 있을 것 같습니다.

 

 

구현 코드 (JavaScript)

 

const solve = (val) => {
    if(val.length === 0) {
        return '';
    }
    
    let count = 0; // '(' - ')'의 개수
    let isRight = val[0] === '(' ? true : false; // 올바른 괄호 문자열인지 확인
    let u = val;
    let v = '';
    for(let i=0; i<val.length; i++) {
        if(i !== 0 && count === 0) { // 초기 인덱스 이후로 count가 0이면 균형잡힌 문자열
            u = val.substring(0, i);
            v = val.substring(i);
            break;
        }
        
        if(val[i] === '(') {
            count++;
        } else if(val[i] === ')') {
            count--;
        }
    }
    
    if(!isRight) { // 올바른 괄호 문자열이 아닌 경우
        let temp = '(' + solve(v) + ')'; // 4-1 ~ 4-3 수행
        
        // 4-4 수행
        u = u.substring(1, u.length-1);
        let utemp = '';
        for(let i=0; i<u.length; i++) {
            if(u[i] === '(') {
                utemp = utemp + ')';
            } else if(u[i] === ')') {
                utemp = utemp + '(';
            }
        }
        
        return temp + utemp;
    } else {
        return u + solve(v);
    }
}

function solution(p) {
    return solve(p);
}

 

 

 

읽어주셔서 감사합니다.

728x90
반응형

'Algorithm > Programmers' 카테고리의 다른 글

[Programmers] 블록 이동하기  (0) 2021.03.20
[Programmers] 자물쇠와 열쇠  (0) 2021.03.19
[Programmers] 문자열 압축  (0) 2021.03.17
[Programmers] 보행자 천국  (0) 2021.03.14
[Programmers] 단체사진 찍기  (0) 2021.03.13

댓글