SENTENCE 문제 질문입니다..

  • redglim
    redglim

    http://www.algospot.com/judge/problem/read/SENTENCE

    계속 오답이 뜨는데..
    아무리 머리를 굴려봐도 이유가 생각이 안나네요..
    생각 못한 경우가 있을 것 같은데...
    힌트 좀 부탁드려요..

    #include <string>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    
    int search(string db[], string key, int begin, int end) {
            if (begin >= end) {
                return begin;
            }
            int med = (begin+end) / 2;
            int comp = db[med].compare(key);
            if (comp==0) return med;
            else if (comp>0) return search(db, key, begin, med-1);
            else return search(db, key, med+1, end);
    }
    bool startsWith(string a, string b) {
        if (a.compare(0, b.size(), b) ==0) return true;
    }
    int main() {
            int n, k;
            scanf("%d %d\n", &n, &k);
            int cnt = 0;
            string book[1001];
            for (int i=0; i<n; i++) {
                getline(cin, book[i]);
            }
            sort(book, book+n);
            for (int j=0; j<k; j++) {
                string nak;
                getline(cin, nak);
                int pos = search(book, nak, 0, n-1);
                if (startsWith(book[pos], nak)) cnt++;
                else {
                    if (pos > 0) { if (startsWith(book[pos-1], nak)) {cnt++;continue;} }
                    if (pos < n-1) { if (startsWith(book[pos+1], nak)) {cnt++;continue;} }
                }
            }
            printf("%d\n", cnt);
    
    
        }
    

    12년 전
1개의 댓글이 있습니다.
  • redglim
    redglim

    셀프 답변합니다..
    startsWith 에 return false; 를 안했네요 -_-;;; 덕분에 하루 종일 삽질...


    12년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.