반응형
    
    
    
  
                              Notice
                              
                          
                        
                          
                          
                            Recent Posts
                            
                        
                          
                          
                            Recent Comments
                            
                        
                          
                          
                            Link
                            
                        
                    | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                            Tags
                            
                        
                          
                          - typescript
 - 자바스크립트
 - 레벨 1
 - dfs
 - javascript
 - TCP
 - ip
 - 프로그래머스 레벨 2
 - 타입스크립트
 - HTTP
 - Nestjs
 - dp
 - 백준
 - 그래프
 - 수학
 - 알고리즘
 - Algorithm
 - 문자열
 - type challenge
 - Node.js
 - Crawling
 - BFS
 - 크롤링
 - 프로그래머스
 - HTTP 완벽 가이드
 - 가천대
 - 쉬운 문제
 - socket
 - 타입 챌린지
 - 소켓
 
                            Archives
                            
                        
                          
                          - Today
 
- Total
 
kakasoo
[node.js] 괄호 회전하기 ( 프로그래머스 레벨2 ) 본문
반응형
    
    
    
  const left = 0;
const right = 1;
const isRight = (arr) => {
    const stack = [];
    for (const item of arr) {
        stack.push(item);
        if (stack.length >= 2) {
            while ((stack[stack.length - 2] === '(' && stack[stack.length - 1] == ')') ||
                   (stack[stack.length - 2] === '[' && stack[stack.length - 1] == ']') ||
                   (stack[stack.length - 2] === '{' && stack[stack.length - 1] == '}')) {
                stack.pop();
                stack.pop();
            }
        }
    }
    return stack.length ? false : true;
}
const solution = (s) => {
    const strArr = s.split('');
    let i = strArr.length;
    let count = 0;
    while(i--) {
        strArr.push(strArr.shift());
        if(isRight(strArr)) {
            count++;
        }
    }
    return count;
}
회전하는 것은 문자열 길이 만큼을 해야 하며, ( do while문으로 짰다면 length - 1 까지만 해도 된다. )
돌면서 올바른 괄호 문자열이 맞는지 체크해줘야 한다.
isRight 함수는 stack을 만들고 그 안에 계속 문자를 push하며 올바른 경우마다 2개 씩 pop한다.
마지막에 모든 문자가 pop되서 사라지면 ok, 사라지지 않으면 올바르지 않은 경우이다.
반응형
    
    
    
  '프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
| [node.js] 가장 먼 노드 ( 프로그래머스 레벨3 ) (0) | 2021.07.02 | 
|---|---|
| [node.js] 방문 길이 ( 프로그래머스 레벨2 ) (0) | 2021.07.02 | 
| [node.js] 쿼드 압축 후 개수 세기 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 | 
| [node.js] 튜플 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 | 
| [node.js] 땅따먹기 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 |