개발개발자

단어의 개수 (1152번) 본문

알고리즘(Algorithm)

단어의 개수 (1152번)

맛두부 2017. 3. 4. 18:50

1. 문제


영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 단어는 띄어쓰기 하나로 구분된다고 생각한다.



2. 포인트


1) fgets함수 이용한 문자열 입력 수신
   - scanf : 공백 기준으로 문자열 입력 받기 때문에 공백 포함 문자열 입력 못받음
   - 문자열 끝
        - fget()    :  "\n" (마지막으로 입력한 '엔터'가 입력되고, 이'\n'으로 문자열 끝 인식
        - scanf()  :  "\0"(NULL) 저장됨


2) 문자열 판단기준 수립
   - 문자열시작~끝 (문자열 정크)
   ※ 공백 갯수로 문자열 판단 시 타 경우 미포함
        → 입력문자열 모두 공백인 경우 / 공백+공백+문자열 / 문자열+공백 등


문자열을 문자열정크로 판단할 것인지 공백으로 판단할지에 대한 감을 잡는데 시간이 걸렸다..

위 예외사항을 생각하지 못했기 때문이다..ㅠㅠ



3. 소스코드


#include <stdio.h>

#include <string.h>


#define LEN 1000000


int main()

{

char str[LEN];

int count = 0;

int i;


fgets(str, LEN, stdin);


for (i = 0; i < strlen(str); i++)

{

if (str[i] != ' ' && str[i] !='\n')

{

while (1)

{

if (str[i + 1] == ' ' || str[i + 1] == NULL)

{

count++;

i++;

break;

}

i++;

}

}

}


printf("%d\n", count);


return 0;

}

'알고리즘(Algorithm)' 카테고리의 다른 글

수 정렬하기 (2750)  (0) 2017.03.04
더하기 사이클 (1110번)  (0) 2017.03.04
OX퀴즈 (8958번)  (0) 2017.03.04
숫자의 개수 (2577번)  (0) 2017.03.04
한수 (1065번)  (0) 2017.03.04
Comments