白駿アルゴリズム1152回


文字数



問題を解く
1.英語の大文字と小文字からなる文字列を指定します.長さ1000001
2.文字列をチェックするときにスペースに遭遇した場合は?wordcnt変数++
こんなに簡単だと思った.
△まだ2つの問題があります.
二つのケース

  • 最初のスペースが
  • の場合、
  • になります.
  • 最後にスペースが表示されるか、2つのスペースが連続して表示されます.
    その部分について例外処理を行った
  • このようにしても問題は解決しなかった.原因を調べると、fgetsなど様々な入力関数を使って解決できるようですが、遠いかどうかはわかりませんので、scanfで利用できる方法を見つけました.

    (理解してくれてありがとう…)従ってscanf("%[^n],str);このような入力が届きました(慣れるには長い時間がかかります)
    42ソウルの時、mascanf、printfから離れていて、write関数しか実現していなかったので、思いもよらなかった!
  • wordcnt出力
  • #include <stdio.h>
    #include<string.h>
    
    int main(void)
    {
      char str[1000001];
      int wordcnt = 1;
      scanf ("%[^\n]", str); //맘에 안 들지만 사용해야함
      
       for(int i =0; i< strlen(str); i++)
       {
        if (str[i] == ' ')
        wordcnt++;
      }
      if(str[0] == ' ')
      wordcnt--; //첫번째 예외 - 첫번째 단어가 공백일 때 wordcnt 하나 감소
      if(str[strlen(str)-1] == ' ')
      wordcnt--; //두번째 예외 - 마지막 단어가 공백일 때 wordcnt 하나 감소
      
      printf("%d", wordcnt);
      return 0;
    }