코딩연습

[백준 알고리즘] Node.js 1343. 폴리오미노

니 뽀 2023. 3. 29. 15:34

1. 문제

https://www.acmicpc.net/problem/1343

 

1343번: 폴리오미노

첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.

www.acmicpc.net

 

2. 풀이

- replace() 메서드를 이용해서 XXXX 와 XX를 치환한다.

const inputs = require('fs').readFileSync('/dev/stdin').toString().trim();

let copyInputs = inputs;
copyInputs = copyInputs.replace(/XXXX/g,'AAAA');
copyInputs = copyInputs.replace(/XX/g,'BB');

if(copyInputs.includes('X')){
    console.log(-1)
} else {
    console.log(copyInputs)
}

 

3. 정리

- 처음 코드는 정규식을 사용하지 않고 작성하였다. 

const inputs = require('fs').readFileSync('/dev/stdin').toString().trim();

let copyInputs = inputs;
for(let i = 0; i < 25; i++){
	copyInputs = copyInputs.replace('XXXX','AAAA');
	copyInputs = copyInputs.replace('XX','BB');
} 

if(copyInputs.includes('X')){
    console.log(-1)
} else {
    console.log(copyInputs)
}

임의로 i 를 만들어 반복문을 사용하여 replace() 메서드를 연속으로 사용하도록 작성하였었다. 하지만 "틀렸습니다"

이후 검색을 통하여 replace(/[old str]/g, '[new str]') 을 이용하여 반복문 없이도 모든 문자열을 치환할 수 있다는 것을 알았다.

 

** 저 반복문이 왜 틀렸는지 모르겠다. 크롬 console 창에선 정상적으로 작동하는데.... 임의로 만든 반복문이긴 해도 입력 예제는 통과할 줄 알았는데 예제 초반부에 "틀렸습니다" 가 나와서 당황스럽다.