알고리즘

프로그래머스 JS | 괄호변환

2022. 7. 28. 23:40
목차
  1. 🔺 Solution
출처 : 프로그래머스 - 코딩테스트 연습2020 KAKAO BLIND RECRUITMENT - 괄호 변환

https://school.programmers.co.kr/learn/courses/30/lessons/60058

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제 역시 재귀함수로 풀어야하는 문제였다. 재귀함수에 대한 이해가 부족하다보니 이 문제도 보자마자 난이도가 높다고 느꼈다.

2번 조건인 u는 "균형잡인 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수있다. 라는 부분을 제대로 이해하지 못해 1시간 내 문제를 풀지 못했다.

🔺 Solution

function solution(p) {
    let answer = '';
    
    if(p.length === 0) {
        return p;
    }
    
    const [pos, correct] = check(p);
    
    let u = p.slice(0, pos);
    let v = p.slice(pos);
    
    if (correct) {
        return u + solution(v);
    }
    answer = '(' + solution(v) + ')';
    for(let i = 1; i < u.length -1; i++) {
        if(u[i] == '(') {
            answer += ')';
        } else {
            answer += '(';
        }
    }
    return answer;
}

function check(str) {
    let correct = true;
    let left = 0;
    let right = 0;
    const mystack = [];
    
    for(let i = 0; i < str.length; i++) {
        if(str[i] === '(') {
            left++;
            mystack.push('(')
        } else {
            right++;
            if(mystack.length === 0) {
                // stack에 열린 괄호가 없는 경우
                correct = false;
            } else {
                // stack에 열린 괄호가 있는 경우 
                mystack.pop();
            }
        }
        
        if(left === right) return [i+1, correct]
    }
    // 균형잡힌 괄호 문자열이 아닐 경우 대비
    return 0, false
}

아래 참고란의 유튜브 해설을 보고 풀어보니 딱히 어려운 로직 없이 문제를 있는 그대로 구현해내면 되는 단순한 문제였다.

2번 조건은 짧게 말하면 짝이 맞는 괄호 단위로 나누라는 것이었다.

그 다음은 조건에 나온대로만 구현하면 되는 문제

 

💡correct == true 라면 올바른 괄호문자열, correct == false 라면 올바른 괄호문자열이 아니다.

참고

https://www.youtube.com/watch?v=Y-Xpiqsx8Hc&t=606s 

 

'알고리즘' 카테고리의 다른 글

프로그래머스 JS | H-index  (0) 2022.11.05
프로그래머스JS | [1차] 뉴스 클러스터링  (0) 2022.07.29
백준 JS | 11729번 하노이 탑 이동 순서  (0) 2022.07.07
프로그래머스 JS | 행렬 테두리 회전하기  (0) 2022.07.06
프로그래머스 JS | 오픈채팅방  (0) 2022.07.02
  1. 🔺 Solution
'알고리즘' 카테고리의 다른 글
  • 프로그래머스 JS | H-index
  • 프로그래머스JS | [1차] 뉴스 클러스터링
  • 백준 JS | 11729번 하노이 탑 이동 순서
  • 프로그래머스 JS | 행렬 테두리 회전하기
3jun
3jun
3jun3jun 님의 블로그입니다.
3jun
3jun
3jun
전체
오늘
어제
  • 분류 전체보기 (94)
    • 프로젝트 (5)
    • Web (9)
    • JavaScript (19)
    • React (12)
    • 알고리즘 (31)
    • Git (3)
    • AWS (3)
    • TypeScript (3)
    • CS (2)
    • Error (6)
    • 회고 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • state
  • 백준 js
  • airbnb style guide
  • outer environment
  • Promise
  • 프로그래머스 코딩테스트
  • msw
  • 자바스크립트
  • 백준js
  • this.props.history.push
  • 프로그래머스 js
  • 프로그래머스 코딩테스트 js
  • 백준 온라인저지
  • 프로그래머스 코테
  • JavaScript
  • 백준 코테
  • 백준 알고리즘
  • react
  • msw 에러
  • 유효성 로직

최근 댓글

최근 글

hELLO · Designed By 정상우.
3jun
프로그래머스 JS | 괄호변환
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.