BOJ 28125 - 2023 아주머학교 프로그래딩 정시머힌

image.png

아주대학교 대회 문제들을 쭉 풀어보았다.


문자열의 뒤부터 검사하며 \\'\'\\' 를 먼저 검사할 수 있도록 해서 변환을 한다.

만약 변환된 정답이 알파벳으로만 이루어지지 않거나 정답 알파펫 개수의 절반보다 변환된 것이 같거나 많다면 정답은 불가능하다로 출력한다.

vector<vs> t{
   {"@", "a"},
   {"[", "c"},
   {"!", "i"},
   {";", "j"},
   {"^", "n"},
   {"0", "o"},
   {"7", "t"},
   {"\\\\'", "w"},
   {"\\'", "v"},
};

void solve() {
   string s;
   cin >> s;
   int cnt = 0;
   string ans;
   for (int i = sz(s) - 1; i >= 0;) {
      int find = 0;
      for (auto x: t) {
         string s1 = x[0];
         char c = x[1][0];
         if (i >= sz(s1) - 1 && s.substr(i - sz(s1) + 1, sz(s1)) == s1) {
            cnt++;
            ans.pb(c);
            find = 1;
            i -= sz(s1);
            break;
         }
      }
      if (!find) {
         ans.pb(s[i]);
         i--;
      }
   }
   reverse(all(ans));
   for (char c: ans) {
      if (c >= 'a' && c <= 'z') continue;
      else {
         cout << "I don't understand\n";
         return;
      }
   }
   debug(cnt, s);
   if (cnt * 2 >= sz(ans)) cout << "I don't understand\n";
   else cout << ans << endl;
   debug(t);
}

Tags:

Categories:

Updated:

Comments