[JavaScript] 백준 12904 A와 B (JS)

SanE·2024년 2월 16일

Algorithm

목록 보기
51/127

A와 B

📚 문제 설명


A와 B로만 이루어진 문자열 2개 ST 가 있다.
S 를 다음과 같은 2개의 연산을 이용하여 T 와 똑같이 만들고 싶다.

  • 문자열 끝에 "A"를 넣는다.
  • 문자열을 뒤집고 "B" 를 넣는다.

👨🏻‍💻 풀이 과정


나는 이 문제를 생각하며 거꾸로 생각하려고 했다.
S 에서 T 와 같아질 때까지 모든 연산을 해보기에는 너무 오래걸릴 것 같았기 때문이다.
그래서 반대로 우리의 목적지인 TS 로 만들고자 했다.

과정은 간단하다.

  • 만약 T 의 마지막이 "A" 라면 pop
  • 만약 T 의 마지막이 "B" 라면 pop 후에 배열을 뒤집는다.
  • 위의 과정을 T 의 길이가 S 와 같아질 때까지 반복
  • TS 를 비교 후 결과 출력

전체 풀이

    let fs = require("fs");
    let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
	// S
    const Goal = input.shift();
	// T
    let MyString = input.shift().split('');

    const solution = () => {
		// S와 T의 길이가 같아질 때까지 반복
        while (MyString.length !== Goal.length) {
          	// T의 마지막 값
            const TOP = MyString[MyString.length - 1];
          	// T의 마지막 값에 따라 함수 실행
            if (TOP === 'A') {
                MyString.pop();
            } else if (TOP === 'B') {
                MyString.pop();
                MyString.reverse();
            }else {// 그럴일은 없겠지만 만약 끝이 A나 B 둘다 아닐 경우
                return 0;
            }
        }
		// 결과 출력
        return MyString.join('') === Goal ? 1 : 0;
    };
    console.log(solution());

🧐 후기


생각보다 너무 쉽게 풀려서 당황스러웠다. 최근들어 문자열 문제를 풀면서 처음 접하는 알고리즘을 많이 봐서 더욱 그렇게 느꼈던 것 같다.

profile
JavaScript를 사용하는 모두를 위해...

0개의 댓글