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 | 31 | 
                            Tags
                            
                        
                          
                          - 힙큐
- 파이썬
- 현대
- 토이프로젝트
- 티스토리챌린지
- programmers
- 소프티어
- re_lunchu
- 탐욕법
- 자바스크립트
- cs공부
- softeer
- Python
- 백준
- GAN
- 스마트팩토리
- 프로그래머스
- cim
- 현대자동차
- heapq
- 오블완
- JavaScript
- 딥러닝
- Java
- boj
- alogorithm
- 자바
- Algorithm
- Baekjoon
- 알고리즘
                            Archives
                            
                        
                          
                          - Today
- Total
eaz_coding
[Programmers] 괄호 변환(Javascript) 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/60058
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
Javascript
function check(str) {
    let stack = [];
    for (let i = 0; i < str.length; i++) {
        if (str[i] == "(") stack.push("(")
        else {
            if (stack.length) stack.pop()
            else return false
        }
    }
    return stack.length === 0;
}
function change(p) {
    let res = '';
    for (let i = 0; i < p.length; i++) {
        if (p[i] == ')') res += '(';
        else res += ')';
    }
    return res;
}
function solution(p) {
    if (p === '') return '';
    let result = '';
    let left = 0;
    let right = 0;
    
    for (let i = 0; i < p.length; i++){
        if (p[i] === '(') left++
        else right++
        
        if (left === right) {
            let u = p.slice(0, i+1);
            let v = p.slice(i+1);
            if (check(u)) {
                return u + solution(v);
            } else {
                result = '(' + solution(v) + ')';
                result += change(u.slice(1, u.length - 1));
                return result;
            }
        }
    }
}
'eaz_algorithm' 카테고리의 다른 글
| [Programmers] 행렬 테두리 회전하기(Python, Javascript, Java) (0) | 2024.06.07 | 
|---|---|
| [Programmers] 수식 최대화(Javascript) (0) | 2024.06.06 | 
| [Programmers] 줄 서는 방법(JavaScript) (0) | 2024.06.05 | 
| [Programmers] 무인도 여행(Python, Java, JavaScript) (0) | 2024.06.05 | 
| [Programmers] 방금그곡 (Python, Java) (1) | 2024.06.03 | 
