오늘 푼 문제
2. 괄호변환 / Lv.2 / 시간 : 29분
programmers.co.kr/learn/courses/30/lessons/60058?language=javascript
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를
programmers.co.kr
function solution(p) {
let split = (s)=>{ // u, v 분리
let [open,close] = [0,0];
for(let i=0;i<s.length;i++){
if(s[i]==="(") open++;
else close++;
if(open===close){
return [s.slice(0,i+1),s.slice(i+1)];
}
}
}
let checkRight = (s)=>{ // 올바른 문자열 판단
let stack = [];
for(let i=0;i<s.length;i++){
let cur = s[i];
if(cur==="(") stack.push(cur);
else{
let pair = stack.pop();
if(!pair) return false;
}
}
return stack.length? false : true;
}
let wholeProcess = (s)=>{
if(s==="") return "";
if(checkRight(s)) return s;
let [u,v] = split(s);
if(checkRight(u)) return u+wholeProcess(v);
return "(" + wholeProcess(v) + ")"
+ u.slice(1,-1).replace(/\(|\)/g,a=>a==="("?")":"(");
}
return wholeProcess(p);
}
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 2020 카카오 공채 - 문자열 압축 (0) | 2021.03.11 |
---|---|
[코테 자신감 올리기 프로젝트] 레벨 1만 조진다 (0) | 2021.03.09 |
[프로그래머스] 2021 카카오 공채 - 순위 검색 (0) | 2021.03.08 |
[프로그래머스] 2021 카카오 공채 - 메뉴 리뉴얼 (0) | 2021.02.24 |
[프로그래머스] 2021 카카오 공채 - 신규 아이디 추천 (0) | 2021.02.19 |