자료구조 및 알고리즘/알고리즘

[알고리즘] 백준 - 1152: 단어의 개수

benjykim 2018. 3. 28. 11:24
반응형

<백준 1152번 - 단어의 개수>

코드는 github에서 SoongsilMilhouse를 검색하시면 됩니다.

(https://github.com/SoongsilMilhouse/BaekjoonOnlineJudge)


* 큰 틀

1) 입력을 받고 '\n'(개행문자)를 null(널문자)로 바꿔준다. (fgets를 쓰면 개행까지 들어가기 때문이다.)

2) 문장의 끝 지점을 nullPoint라는 변수에 저장한다. 

3) 반복문을 시작하기 전에 배열의 첫 문자가 공백인지 공백이 아닌지 검사한다.

4) 반복문으로 원소 하나하나 접근하며 공백 개수(spaceCount)를 센다.



* 세부사항('_'(언더바)문자는 공백입니다.)

1) 첫문자가 공백이 아닌 경우


  1-1) 'a' 입력한 경우 (배열엔 'a','\0'으로 저장되어 있다.)

spaceCount = 0;


  1-2) "a_b"의 경우 ('a',' '(공백),'b','\0')

spaceCount = 1;


  1-3) "a_b_"의 경우 

spaceCount = 2;    -> \0앞에 문자가 공백(' ')이면 -1을 해준다.

  

  1-4) 1-1에서 1-3까지의 과정을 마친 후에 +1을 해준다. (spaceCount는 공백을 세는 것이지만 

결국엔 단어의 개수를 나타낸다. 공백이 없는 1-1)의 경우엔 1-4에서 +1을 해줌으로써 단어의 개수를 

1개로 만들어준다.)



2)  첫문자가 공백인 경우


  2-1) "_a"의 경우(' '(공백),'a','\0')

spaceCount = 1;


  2-2) "_a_"의 경우( 2-1에서 'a'뒤에 공백 추가)    -> \0앞에 문자가 공백이면 -1을 해준다.

spaceCount = 2;


  2-3) "_a_b"의 경우                           -> \0앞에 문자가 공백이 아니면 spaceCount값을 그대로 쓴다.

spaceCount = 2;

반응형