Javascript + Typescript/자바스크립트로 알고리즘풀기
[백준] 1343
치춘
2022. 5. 17. 21:20
폴리오미노
문제
민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB
이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.
폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다.
출력
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
풀이
const polio = () => {
let str = require("fs").readFileSync("/dev/stdin").toString().trim();
let con = 0;
const strlen = str.length;
let ans = "";
for (let i = 0; i < strlen; i++) {
if (str[i] === ".") {
while (con >= 2) {
if (con >= 4) {
ans += "AAAA";
con -= 4;
} else if (con >= 2) {
ans += "BB";
con -= 2;
}
}
if (con !== 0) {
console.log(-1);
return;
}
ans += ".";
} else con++;
}
while (con >= 2) {
if (con >= 4) {
ans += "AAAA";
con -= 4;
} else if (con >= 2) {
ans += "BB";
con -= 2;
}
}
if (con !== 0) console.log(-1);
else console.log(ans);
};
polio();
반성회
.
을 만날 때마다 지금까지 연속해서 등장한 X의 개수를 세서 AAAA
랑 BB
로 채워줬다
채울수 없는 길이를 만나면 (개수가 홀수일 때) -1 출력하고 바로 종료