Toy_ #17.balancedBrackets
- 문제
문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴합니다.
주의사항
- 괄호의 종류는 (, )만 고려합니다.
- 괄호는 먼저 열리고((), 열린만큼만 닫혀야()) 합니다.
- 빈 문자열을 입력받은 경우, true를 리턴해야 합니다.
입출력 예시
let output = balancedBrackets('(');
console.log(output); // // -> false
output = balancedBrackets('()');
console.log(output); // --> true
- 풀이
const balancedBrackets = function (str) {
// 1. str을 배열로 만든다
// 2. 괄호의 모음 객체를 (열린 괄호 = 키, 닫힌 괄호 = 값) 만들어 각 괄호의 짝 비교를 하도록 한다.
// 3. 반복문으로 str 배열을 확인한다
// 4. 만약 요소값이 키값의 종류인 열린 괄호인 경우 빈 배열에 넣어 준다.
// 5. 요소값이 닫힌 괄호인 경우 괄호 모음 객체 중 빈 배열에 마지막으로 들어간 열린 괄호를 키로 가지는 값과 비교하여, 같으면 배열에 넣었던 열린 괄호를 지운다. 다르면 해당 닫힌 괄호도 빈 배열에 넣는다.
let verify = { "(" : ")", "{" : "}", "[" : "]" }
const aux = str.split('').reduce((ac, cv) => {
if (cv === verify[ac[ac.length - 1]]) {
ac.pop()
} else {
ac.push(cv)
}
return ac
}, [])
return aux.length === 0
}
stack을 이용했다는 점과 짝을 키와 값으로 설정해 두어 비교하는 식을 구현했다.
Author And Source
이 문제에 관하여(Toy_ #17.balancedBrackets), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jonghwan2_y/balancedBrackets저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)