DINGA DINGA
728x90

https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한

www.acmicpc.net

 

코드

#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