새소식

Baekjoon

[BaekJoon] 1013 번 Contact 문제 - (nodejs)

  • -
728x90
문제 번호 :  1013 번

문제 바로가기 https://www.acmicpc.net/problem/1013

 

<<< 문제 내용 >>>

 


 

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');

let N = input[0];

function isMatch(str){
    const regexp = /^(01|(100+1+))+$/g;
    let text = str.match(regexp)?.reduce((acc, cur) => acc+cur,"");
    if (text === undefined) text = text || 0;

    return (str.match(regexp)?.reduce((acc, cur) => acc+cur,"") === str);
}

for(let i = 1; i <= N; i++){
    if(isMatch(input[i])) console.log("YES");
    else console.log("NO");
}

* 정규식을 짜는데 굉장히 어려웠던 문제였습니다..

 

반례를 찾지못해 블로그를 찾다보니, C++같은 다른 언어와 자바스크립트의 정규식 동작원리가 조금 다른 것 같다는 느낌을 받았습니다. ( 정확한 원인은 모르겠음 )

 

결국, 개발자 톡방 등에 질문을 통해 처음과 끝에 ' ^ '와 ' $ ' 를 추가하면서 해결할 수 있었습니다.

 

다른 해결 방법으로는 replace와 regex를 접목시켜서 해결할 수 있는데, 이 편이 조금 더 빠르고 직관적인 것 같습니다.

 

 

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.