개발개발자
단어의 개수 (1152번) 본문
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 |