풀이
다른 언어에 비해 문자열에 관한 문제는 문제의 난이도에 비해 C로 풀이하기 힘든만큼 꼭 C를 고집할 필요는 없다.
C언어로는 단어의 개수를 세는 방식이 아닌, 공백의 개수를 세고, 경우의 수를 따지는 방식이 더 효율적인 듯 하다.
- 엔터를 입력할 때 까지 계속 입력받는다.
- 공백 하나만 입력되는 경우도 고려해야한다.
- 마지막 단어 뒤에 공백이 있거나 없을 수 있어서 len - 1로 맨 끝의 공백이나, 단어의 맨 뒤를 고려하지 않는다.
소스코드
#include <stdio.h>
#include <string.h>
int main(){
char str[1000001];
gets(str);
int cnt = 0, len = strlen(str);
if (len == 1 && str[0] == ' '){
cnt = -1;
}else
for(int i = 1; i < len-1; i++)
if(str[i] == ' ')
cnt++;
printf("%d\n", cnt+1);
}
출처
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 1330] 두 수 비교하기 [C] (0) | 2021.07.09 |
---|---|
[백준 1157] 단어공부 [C] (0) | 2021.07.09 |
[백준 1008] A/B [C] (0) | 2021.07.09 |
[백준 1001] A-B [C] (0) | 2021.07.09 |
[백준 1000] A+B [C] (0) | 2021.07.09 |