티스토리 뷰

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

 

12904번: A와 B

수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수

www.acmicpc.net

처음  풀이할 땐 S에서 T의 길이까지 만들 수 있는  모든 문자열의 경우를 구해보았습니다.

나름 Set을 사용해서 중복체크도 했지만.. 메모리 초과

 

새로운 풀이에서는 반대로 접근하여 T에서 S를 만들 수 있는지 체크하였습니다.

 

문제에 주어진 S -> T 연산을 거꾸로 적용합니다.

- 문자열의 뒤에 A를  추가한다 : 문자열 뒤에 A를 제거한다.

- 문자열을 뒤집고  뒤에 B를 추가한다 : B를 제거하고 문자열을 뒤집는다

 

T의 길이가 S의 길이와 같아질 때까지 위 연산을 적용한 결과가 S와 같다면 S -> T가 가능한 경우입니다.


C++ 소스 코드

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    string s,t;
    cin >> s >> t;
    while(t.length()> s.length()){
        if (t.back()=='A') t.pop_back();
        else {
            t.pop_back();
            reverse(t.begin(),t.end());
        }
    }
    if (s == t) cout << 1 << '\n';
    else cout << 0 << '\n';
    return 0;
}

'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글

BOJ) 2210 - 숫자판 점프  (0) 2020.06.27
BOJ) 3568 - iSharp  (0) 2020.06.26
BOJ) 10986 - 나머지 합  (0) 2020.06.23
BOJ) 12970 - AB  (0) 2020.06.22
프로그래머스) Lv4 - 지형 이동  (0) 2020.06.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함