[백준] 12904 A와 B - javascript

Yongwoo Cho·2021년 12월 30일
0

알고리즘

목록 보기
60/104
post-thumbnail
post-custom-banner

📌 문제

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

profile
Frontend 개발자입니다 😎
post-custom-banner

0개의 댓글