본문 바로가기

백준

24524 아름다운 문자열

뭔가 한번 읽으면서 확인하면 될 것 같았는데 다른 문제 먼저 풀고 라운드 마친 뒤에 풀이 들었다. 

t가 a, b, c라고 하면 각각의 개수를 세주면 되는데

a는 앞에 아무런 조건이 없으므로 그냥 개수를 센다.

b는 앞에 a가 무조건 있어야 하므로 a > b일 경우에만 b의 개수를 더했다.

c는 앞에 b가 무조건 있어야 하므로 b > c일 경우에만 c의 개수를 더했다.

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>
#include <stdio.h>
#include <math.h>
#include <sstream>
#include<cassert>
#include <climits>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
#define MAXV 1000000007

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using iis = pair<int, string>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;

int arr[50];

int main() {
    string s, t;
    cin >> s >> t;
    
    for (int i = 0; i < s.size(); i++) {
        for (int j = 0; j < t.size(); j++) {
            if (t[j] == s[i] && j == 0)
                arr[j]++;
            else if (t[j] == s[i] && arr[j-1] > arr[j])
                arr[j]++;
        }
    }
    
    // for (int i = 0; i < t.size(); i++) {
    //     printf("%d ", arr[i]);
    // }
    
    printf("%d\n", arr[t.size() - 1]);
    
    return 0;
}

'백준' 카테고리의 다른 글

6574 새로운 과일  (0) 2023.02.25
12909 그래프 만들기  (0) 2023.02.11
23083 꿀벌 승연이  (0) 2023.01.14
1242 소풍  (0) 2023.01.14
13019 A를 B로  (0) 2022.12.17