728x90
    
    
  반응형
    
    
    
  balancedBrackets
문제
문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다.
- 다음 단계에 맞춰 함수를 작성해 보세요
- 괄호의 종류를 단 한가지로 한정합니다.
 - 괄호의 종류를 늘려 모든 종류의 괄호에도 작동하도록 합니다.
 - 괄호를 제외한 문자열이 포함된 경우에도 작동하도록 합니다.
 
 
입력
인자 1 : str
- string 타입의 괄호가 포함된 문자열
 
출력
- boolean 타입을 리턴해야 합니다.
 
주의사항
- 괄호의 종류는 (, )만 고려합니다.
 - 괄호는 먼저 열리고((), 열린만큼만 닫혀야()) 합니다.
 - 빈 문자열을 입력받은 경우, true를 리턴해야 합니다.
 
입출력 예시
let output = balancedBrackets('('); console.log(output); // // -> false output = balancedBrackets('()'); console.log(output); // --> true
Advanced
- 모든 종류의 괄호((, ), {, }, [, ])가 포함된 문자열을 입력빋아 모든 괄호의 짝이 맞는지 여부를 리턴해 보세요.
 
let output = balancedBrackets('[](){}'); console.log(output); // --> true output = balancedBrackets('[({})]'); console.log(output); // --> true let output3 = balancedBrackets('[(]{)}'); console.log(output); // --> false
풀이
배운점
1. 객체형태로 in 연산자를 쓰면, key값의 포함여부를 검토한다(11~12번째줄)
2. let top = stack.pop(); 을 적용하면 stack에서 pop 메서드가 적용됨과 동시에 top이라는 변수에 해당 값이 저장된다.
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
 | 
 const balancedBrackets = function (str) { 
  const stack = []; 
  const opener = { 
    '{': '}', 
    '[': ']', 
    '(': ')', 
  }; 
  const closer = '}])'; 
  for (let i = 0; i < str.length; i++) { 
    if (str[i] in opener) { 
      stack.push(str[i]); 
    } else if (closer.includes(str[i])) { 
      const top = stack.pop(); 
      const pair = opener[top]; 
      if (pair !== str[i]) { 
        return false; 
      } 
    } 
  } 
  return stack.length === 0; 
}; 
 | 
cs | 
728x90
    
    
  반응형
    
    
    
  'Computer Science > Algorithm' 카테고리의 다른 글
| Prm 18 : getItemFromTwoSortedArrays / 이진탐색 (0) | 2021.01.19 | 
|---|---|
| Prm 12 : Tree BFS (0) | 2021.01.13 | 
| quickSort / 퀵정렬 (0) | 2021.01.10 | 
| Prm 15 : primePassword / bfs - queue, 각 자리수 1씩 올리기, [n++], fill (0) | 2021.01.10 | 
| 소수 구하기 : isPrime, prime number, sqrt (0) | 2021.01.09 |