ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PS] 백준 13908번: 비밀번호
    문제해결 2023. 11. 2. 00:30

    브루트포스문제에 어느정도 자신감이 붙은 상태였는데

    실버문제에 별안간 꺾여버렸다.

     

    제한이 생각보다 많이 타이트했던 것...

     

    아래 코드블럭 중 1번 코드블럭으로 아무리 제출해도 TLE가 나던데,

    아무리 생각해도 실버 브루트포스문제가 이것보다 더 어려울 것 같지가 않아서 궁리를 했다.

     

    결국 문제를 찾았는데

    if (!flag0) return;

    이자식. 이자식으로 쓸모없는 탐색을 스킵해줘야한다!

    if (str.find(c) == string::npos)

    앞으로는 그냥 깔끔하게 이걸 쓰자...

    string::npos 기억해두자!!

    #include <bits/stdc++.h>
    using namespace std;
    
    #define endl "\n"
    #define FOR(i, N) for (int i = 0; i < int(N); i++)
    #define FORL(e, S) for (auto& e : S)
    
    vector<char> essentials;
    
    int n, m;
    int ans = 0;
    
    void solve(string &str) {
      bool flag0 = true;
      FORL(c, essentials) {
        bool flag = false;
        FORL(c2, str) {
          if (c == c2) {
            flag = true;
            break;
          }
        }
        flag0 = flag0 && flag;
      }
      if(flag0) ans += 1;
    }
    
    int main() {
      cin >> n >> m;
      FOR(i, m) { char input; cin >> input; essentials.push_back(input);}
    
      FOR(i, pow(10, n))  {
        string str = to_string(i);
        str.insert(0, n - str.length(), '0');
        solve(str);
      }
      cout << ans << endl;
      return 0;
    }
    #include <bits/stdc++.h>
    using namespace std;
    
    #define endl "\n"
    #define FOR(i, N) for (int i = 0; i < int(N); i++)
    #define FORL(e, S) for (auto& e : S)
    
    vector<char> essentials;
    
    int n, m;
    int ans = 0;
    
    void solve(string &str) {
      bool flag0 = true;
      FORL(c, essentials) {
        bool flag = false;
        FORL(c2, str) {
          if (c == c2) {
            flag = true;
            break;
          }
        }
        flag0 = flag0 && flag;
        if (!flag0) return;
      }
      if(flag0) ans += 1;
    }
    
    int main() {
      cin >> n >> m;
      FOR(i, m) { char input; cin >> input; essentials.push_back(input);}
    
      FOR(i, pow(10, n))  {
        string str = to_string(i);
        str.insert(0, n - str.length(), '0');
        solve(str);
      }
      cout << ans << endl;
      return 0;
    }

     

     

     

     

     

     

     

Designed by Tistory.