728x90
https://www.acmicpc.net/problem/1152
코드
#include <stdio.h>
#include <string.h>
main() {
char sen[1000000];
int space = 0; //space: 공백의 개수
scanf("%[^\n]s", sen); //%[^\n]을 이용해 \n을 제외한 모든 문자를 입력받음
for (int i = 0; i < strlen(sen); i++)
if (sen[i] == ' ') //공백이 나올 때마다 space를 1씩 증가
space++;
if (sen[0] == ' ') //문자열 처음에 공백이 나오면 space를 1 감소
space -= 1;
if (sen[strlen(sen) - 1] == ' ') //문자열 마지막에 공백이 나오면 space를 1 감소
space -= 1;
printf("%d", space+1); //공백의 개수가 space이므로, 단어의 개수인 space+1 출력
}
설명
일반적으로 scanf는 공백을 입력 받을 수 없기 때문에, %[^\]을 사용해 \n을 제외한 모든 문자를 입력 받도록 했다.
이후 입력 받은 단어 사이에 있는 공백의 개수를 구하고, 마지막에 1을 더해 단어의 개수를 출력한다.
728x90
'C & C++ > BOJ' 카테고리의 다른 글
[백준] 1264번: 모음의 개수 (1) | 2021.02.19 |
---|---|
[백준] 1259번: 팰린드롬수 (0) | 2021.02.19 |
[백준] 2869번: 달팽이는 올라가고 싶다 (0) | 2021.02.09 |
[백준] 1316번: 그룹 단어 체커 (0) | 2021.02.09 |
[백준] 1094번: 막대기 (0) | 2021.02.08 |