본문 바로가기

프로그래밍/백준

백준 1152번: 단어의 개수 (C언어)

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

 

1152번: 단어의 개수

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

www.acmicpc.net

 

더보기
#include<stdio.h>
int main(){
	char str[1000000];
	int i, count;
	
	scanf("%[^\n]",str);
	
	count = 0;
	for(i=1; str[i]!='\0'; i++){ //두번째 문자부터 세기
		if(str[i]==' ') count++;
	}
	if(str[i-1]==' ') count--; //맨 뒤가 공백일 경우 1 빼기
	
	printf("%d",count+1);
	
	return 0;
}

단어를 세는게 아니라 빈칸을 세는 꼼수(?)

앞뒤로 공백이 있을 수 있다고 해서 앞뒤 공백을 안세는 방법을 사용했습니다.

+ 공백에서 문자 잘리는걸 기억해냈다@