300x250
반응형
문제
2020 KAKAO BLIND RECRUITMENT > 괄호 변환
아이디어
이 문제의 아이디어는 문제에서 제공해주고 있습니다.
문제에서 설명하는 상황에 맞게 코드를 구현하기만 하면 끝인 문제입니다.
굳이 하나를 선택해보자면 재귀 함수를 이용해야 된다고 말할 수 있을 것 같습니다.
구현 코드 (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 |
댓글