All'alba vincerò

At dawn, I will win!

Algorithm

[백준] 9012번: 괄호

나디아 Nadia 2024. 10. 3. 20:01

🛠️ 문제 

9012번 괄호

 

 

 

💡 풀이

const fs = require('fs');
const path = require('path');

const input = fs.readFileSync(path.join(__dirname, 'input.txt')).toString().trim().split('\n');

const len = input.shift(); 
// input.txt의 첫 번째 요소 (문자열의 개수) 반환
const result = [];

for (let i = 0; i < len; i++) {
    let cnt = 0; // '('와 ')'의 균형을 체크
    let isValid = true; // 현재 괄호 문자열이 올바른지 체크
    
    //  각 문자열의 문자를 하나씩 순회
    for (let s of input[i]) {
        cnt += s === "(" ? 1 : -1;
        // '('가 나오면 cnt를 1 증가
        // ')'가 나오면 cnt를 1 감소
        
        // '('보다 ')'가 먼저 나오면 무효(cnt가 음수가 되지 않도록)
        if (cnt < 0) {
            isValid = false;
            break;
        }
    }
    
    // 마지막까지 cnt가 0이어야 올바른 짝임(cnt가 0이 아니면 '('와 ')'의 개수가 맞지 않다는 뜻)
    if (cnt !== 0) {
        isValid = false;
    }

    // 괄호 문자열에 대한 결과
    result.push(isValid ? 'YES' : 'NO');
}

console.log(result.join('\n'));

VS code 출력값

 

 

 

Algorithm-study/Algorithm/Solving/Stack & Que/9012.js at main · kwonboryong/Algorithm-study

알고리즘(algorithm) 문제 풀이 스터디 . Contribute to kwonboryong/Algorithm-study development by creating an account on GitHub.

github.com

 

 


💁‍♀️ 문제

❓ VS code에서 코드 실행 시 정답 출력값과 다른데 백준에 제출했을 땐 맞았다고 뜬다.

 

왜일까?

  • 확실하진 않지만 백준과 로컬 환경의 입력 처리 방식이 다를 수 있기 때문에 발생하는 문제일 수도 있다고 한다.
    • 백준에서는 fs.readFileSync('/dev/stdin')를 사용하여 표준 입력을 처리한다.
      이는 백준의 문제 입력 방식을 반영한 것이고, 입력이 정확하게 처리된다.
    • VS Code에서는 path.join(__dirname, 'input.txt')를 사용하여 파일에서 입력을 읽어오고 있기 때문에 입력이 잘못 처리될 수 있다. 특히, 입력 파일 형식이나 개행 처리 등에서 차이가 발생할 수 있다.

백준
VS code 출력값

 

 

 

1주차 - 4일 | Notion

💡문제 분석 요약

thin-brisket-ae4.notion.site