[백준 9012번 문제] 괄호 | 알고리즘 설명 & 문제 풀이 with 자바스크립트(Javascript)

Re_Go·2024년 1월 9일
0

코딩테스트연습

목록 보기
76/106
post-thumbnail

1. 첫번째 문제 풀이(2024-01-09)

이 문제는 일전에 풀었었던 프로그래머스 괄호 문제 를 풀어봤던 상황이라 같은 방법으로 풀어볼까 하다가 음... 양심이 없을 듯 하여 😅 문자열 그대로 처리를 해보기로 했습니다.

일단 원리는 똑같은데, 여는 괄호 '(' 가 등장할 때마다 count 변수를 증가시켜주고, 닫는 괄호가 나올 때 count의 값이 0 이상 (닫을 게 있을 때)일 때 count를 감소시켜 줍니다.

그리고 count가 0일 경우 count의 상태 자체를 -1로 바꾸고 break를 시킨 후 해당 괄호 문자열에 대한 YES, NO 여부를 삼항연산자를 이용하여 출력해 줍니다.

const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');
const length = Number(input[0]);
const arr = input.slice(1).map(bracket => bracket.trim()); // input의 1번째 인덱스(괄호 문자열 배열들)부터 끝까지 자르고 map으로 각 배열마다 trim으로 양쪽 공백을 잘라준 후 정리된 이중 배열을 arr에 반환

for (let i = 0; i < length; i++) {
    let brackets = arr[i]; // 배열 선택
    let count = 0; // count 세팅

    for (let j = 0; j < brackets.length; j++) { // brackets 길이만큼 for문 돌리고
        const bracket = brackets[j]; // 괄호들을 꺼냄
     
        if (bracket === '(') { // 만약 괄호가 여는 괄호라면 count 증가
            count++;
        } else{ // 여는 괄호가 아닐 경우, 즉 닫는 괄호일 경우
            if (count === 0) { // 현재 카운트의 값이 0, 즉 닫는 괄호에 대해 짝이 없을 때
                count = -1; // count를 -1로 할당 후 break
                break;
            }
            count--; // 닫는 괄호인데 조건에 걸리지 않은 경우, 즉 count가 존재할 경우에는 count를 감소시켜 짝을 맞춰줌
        }
    }

    console.log(count === 0 ? 'YES' : 'NO'); // 해당 괄호 배열에서 count가 0, 즉 짝이 다 있는 괄호들이라면 YES를, 하나라도 남겨져 있는 경우, 즉 짝이 맞지 않는 경우 NO를 출력
}
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.

0개의 댓글