WorldLength 시간초과 때문에 질문 드립니다.

  • Freean2468
    Freean2468

    문제 링크 : http://algospot.com/judge/problem/read/WORDLENGTH

    시간초과 때문에 WorldLength를 계속 풀고 있습니다.
    네 뭐 잘 짜지는 못했습니다만 ㅠㅠ
    전 아래의 소스가 1000ms를 넘지는 않을 거라고 생각하는데요.
    저만의 착각인 건가요 ㅠㅠ
    if문이 많지만...반복은 딱 한 번만 하는데요 ㅠ

    #include <iostream>
    #include <stdio.h>
    #include <iomanip>
    #include <string>
    
    using std::cout;
    using std::cin;
    using std::endl;
    using std::fixed;
    using std::setprecision;
    
    class Sentence{
    private:
      char m_line[4000];
      int m_index;
      int m_numOfWords;
      int m_lengthOfWords;
    
    public:
      Sentence():m_index(0),m_numOfWords(1), m_lengthOfWords(0){}
    
      void insert(char* _word){
        for(int i = 0; _word[i] != '\0'; i++){
          m_line[m_index] = _word[i];
    
          if(m_line[m_index] >= 'a' && m_line[m_index] <= 'z')
            m_lengthOfWords++;
    
          if(m_line[m_index-1] == m_line[m_index] && m_line[m_index] == ' ')
            continue;
    
          if(m_index > 0){
            if(m_line[m_index] == ' '){
              if(m_line[m_index-1] != ' ')
                m_numOfWords++;
            }
          }
          if(m_index > 2){
            if(m_line[m_index-1] == '-')
              if(!(m_line[m_index-2] >= 'a' && m_line[m_index-2] <= 'z') && !(m_line[m_index] >= 'a' && m_line[m_index] <= 'z'))
                m_numOfWords++;
          }
    
          m_index++;
        }
      }
    
      void process(){
        cout <<fixed << setprecision(3) << m_lengthOfWords / (float)m_numOfWords << endl;
      }
    };
    
    int main(){
      int test = 0;
      int line = 0;
      char str[81]={'\0'};
      char temp[2]={'\0'};
    
      cin >> test;
    
      while(test--){
        cin >> line;
        Sentence sen;
    
        while(line--){
          fflush(stdin);
          cin.getline(str, 80);
          sen.insert(str);      
        }
        sen.process();
      }
    
      return 0;
    }
    

    12년 전
2개의 댓글이 있습니다.
  • astein
    astein

    일단 fflush는 사용하시면 안되고 cin 대신에 scanf를 추천드립니다.


    12년 전 link
  • Freean2468
    Freean2468

    시간초과는 안 뜨게 됐네요 감사합니다 ㅠㅠ


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