PS_Baekjoon

[백준 C++] 9625번 : BABBA

SMILELY 2023. 3. 31. 11:12

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

 

9625번: BABBA

상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했

www.acmicpc.net

풀이 :
- 문제 태그에도 dp라고 되어있고 검색해보니 다들 dp로 푼 것 같은데, 
   특징만 고려한다면 굳이 배열을 선언하지 않아도 풀 수 있다
- 특징 1 : A는 B로 변한다 -> A가 2개 있다면 A는 0개, B는 2개
   특징 2 : B는 BA로 변한다 -> B가 2개 있다면 B는 2개 A도 2개

- A의 갯수를 저장할 변수만 하나 선언해주고 A의 갯수를 저장해둔 뒤, A에는 B의 갯수를 넣어주고,
   B에는 A의 갯수를 더해주면 값을 구할 수 있다
 
코드 :

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    cin.tie(NULL);
    ios::sync_with_stdio(false);
    
    int k, cnta, cntb, temp;

    cin >> k;
    cnta = 1; //초깃값 A는 1개이다
    cntb = 0;
    while(k--){ //k번만큼 돌 때,
        temp = cnta; //A의 갯수를 저장하고,
        cnta = cntb; //A에 B 대입, 
        cntb += temp; //B에는 따로 저장해뒀던 A를 더해준다
    }
    cout << cnta << ' ' << cntb << '\n';
}