말랑한 하루
[Programmers] 괄호 변환 (Lv 2, JavaScript) 본문
반응형
[ 개요 ]
풀이시간 : 62분
[ 학습 내용 ]
문제에 대한 이해가 늦었다.
u가 반드시 균형잡힌 문자열로 분리가 되어야 함이 핵심이었으나, 늦게발견하여 풀이가 늦어졌음.
[ 소스 코드 ]
function checkBrackets(p) {
var balance = 0;
for(var i=0; i<p.length; i++) {
p[i] === "(" ? balance++ : balance--;
if (balance < 0) return false;
}
return true;
}
function solution(p) {
var answer = "";
// 1
if (p === "") return "";
// 균형잡힌 괄호 문자열을 찾는 인덱싱
var balance = 0;
var idx = 0;
do {
p[idx++] === "(" ? balance++ : balance--;
} while(balance !== 0);
// 2
var u = p.slice(0, idx);
var v = p.slice(idx);
// 3
if(checkBrackets(u)) {
// 3-1
answer = u + solution(v);
} else {
// 4-1, 4-2, 4-3
answer = "(" + solution(v) + ")";
// 4-4
for(var i=1; i<idx-1; i++) {
answer += p[i] === "(" ? ")" : "(";
}
}
// 3-1, 4-5의 반환
return answer;
}
[ 코드 분석 ]
용어의 정의를 따라 풀이를 진행하면 간단하게 해결할 수 있었다. 위치에 맞게 주석으로 표기하였다.
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Programmers] 수식 최대화 (Lv 2, JavaScript) (0) | 2022.07.18 |
---|---|
[Programmers] 거리두기 확인하기 (Lv 2, JavaScript) (0) | 2022.07.13 |
[Programmers] 메뉴 리뉴얼 (Lv 2, JavaScript) (0) | 2022.07.11 |
[Programmers] 오픈채팅방 (Lv 2, JavaScript) (0) | 2022.07.08 |
[Programmers] 문자열 압축 (Lv 2, JavaScript) (0) | 2022.07.08 |
Comments