[テストコード]白準17219号パスワード-C++を見つけた


  • 白駿17219パスワード問題を検索するショートカットキー

  • 問題を解く


    これは
  • バイナリ検索を利用してサイトのパスワードを検索する簡単な問題です.
  • 注意事項
    1)初めてベクトルで解く.ベクトルはタイムアウトしやすい.したがって,配列に変更して解き直す.
    2)coutを使用するとタイムアウトになります.したがって、次のコードを追加します.
  • cin.tie(NULL);
    ios::sync_with_stdio(false);

    C++コード

    #include<iostream>
    #include<stdio.h>
    #include <string>
    #include<algorithm>
    
    using namespace std;
    
    //이진탐색으로 
    string find_pwd(string s, int index, pair<string, string>* s_p) {
    
    	int l = 0;
    	int mid = index / 2; 
    	int r = index;
    
    	while (l<=mid && mid <=r)
    	{
    		if (s.compare(s_p[mid].first) == 0) {
    			return s_p[mid].second;
    		}
    		else if (s.compare(s_p[mid].first) < 0) {
    			r = mid - 1;
    			mid = (l + r) / 2;
    		}
    		else {
    			l = mid + 1;
    			mid = (l + r) / 2;
    		}
    	}
    	
    
    
    }
    
    int main() {
    	cin.tie(NULL);
    	ios::sync_with_stdio(false);
    
    	int N; //전체 사이트 주소의 수 
    	int M; //찾으려는 사이트 주소의 수 
    	cin >> N >> M;
    
    	pair<string, string> *site_pwd = new pair<string,string> [N]; 
    
    	//사이트, 비밀번호 입력 받기 
    	for (int i = 0; i < N; i++) {
    		string s, p;
    		cin >> s >> p;
    		site_pwd[i] = make_pair(s,p);
    	}
    
    	sort(site_pwd, site_pwd+N);
    
    
    	//찾고자하는 사이트 입력받기 
    	for (int i = 0; i < M; i++) {
    		string f;
    		cin >> f;
    		cout << find_pwd(f, N, site_pwd) << "\n";
    	}
    
    	return 0;
    }