https://www.acmicpc.net/problem/12904
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
const input = fs.readFileSync(filePath).toString().trim().split("\n");
function isSameArray(arr1, arr2) {
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) return false;
else continue;
}
return true;
}
let a = input[0].trim().split("");
let b = input[1].trim().split("");
let ans = 0;
while (1) {
if (a.length === b.length) {
if (isSameArray(a, b)) ans = 1;
break;
}
if (b[b.length - 1] === "A") b.pop();
else {
b.pop();
b.reverse();
}
}
console.log(ans);
✔ 알고리즘 : 문자열
✔ 입력값으로 받는 두 문자열을 각각 a, b라 했을 때 a에서 문자열을 추가해서 b를 만드는 문제이지만 나는 b에서 문자열을 삭제해서 a로 만드는 방식으로 접근하였다.
✔ 문자열을 split으로 배열로 만든 후 배열을 조정하면서 문제를 해결하였다.
✔ 우선 b문자열의 맨뒤가 A이든 B이든 pop 한다. 단, A인경우 pop만하고 B인 경우 pop하고 reverse로 문자열을 뒤집는다.
✔ 계속 pop,reverse를 해가며 a문자열과 b문자열의 길이가 같을 때까지 반복한다.
✔ 두 배열의 길이가 같은 경우 비교를 해주는데 isSameArray 함수를 따로 만들어서 두 배열이 같은지 비교하였다.
✔ 같은 경우 만들 수 있는 경우이므로 ans를 1로 갱신하고 break한다.
✔ 아닌 경우 만들 수 없는 경우이므로 그냥 break 한다. 즉, ans는 초기설정값인 0이 된다.
✔ 난이도 : 백준 기준 골드5