프로그래머스 LEVEL 2(괄호 변환)
-
사용 언어 : javascript
-
해결 날짜 : 2022-08-25
-
해결 방법 :
- 문자열 p를 균형잡힌 괄호 문자열 u, v로 분리
- u가 올바른 괄호 문자열이면 v에 대한 재귀 수행
- u가 올바르지 않은 괄호 문자열이면 ‘(‘ + v에 대한 재귀 +’)’ + 첫, 끝 글자 제거한 u의 괄호 방향 뒤집은 문자열 반환
-
회고 : -
-
코드
const isProperString = (u) => { let count = 0; for (let i = 0; i < u.length; i++) { u.charAt(i) === '(' ? count++ : count--; if (count < 0) return false; } return u.charAt(0) === ')' || u.charAt(u.length - 1) === '(' ? false : true; } const toBalancedString = (w) => { if(w.length === 0) return ''; if(isProperString(w)) return w; let count = 0; for (let i = 0; i < w.length; i++) { w.charAt(i) === '(' ? count++ : count--; if (count === 0) { count = i + 1; break; } } let u = w.slice(0, count); let v = w.slice(count, w.length); if (isProperString(u)) { return u + toBalancedString(v); } else { let temp = '(' + toBalancedString(v) + ')'; u = u.slice(1, u.length - 1); let newU = ''; for (let i = 0; i < u.length; i++) { newU += u.charAt(i) === '(' ? ')' : '('; } return temp + newU; } } function solution(p) { return toBalancedString(p); }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges