반응형

 

전형적인 낚시문제.. 

앞, 뒤에 공백이 있을 수 있다는 사실을 모른채 뉴비들의 정답률을 뺏어간 25퍼짜리 문제입니다..

 

 

쉽습니다.  앞뒤 공백을 제외한 공백의 갯수 + 1이 단어의 개수가 됩니다.

(공백이 연속해서 나오는 경우는 없다. ) 라는 조건 때문입니다. 이것을 고려해서 코드를 짜면 

#include <iostream>
#include <string>
using namespace std;

string arr;
int cnt = 0;
int main() {
	getline(cin,arr);

	for (int i = 0; i < arr.size(); i++)
		if (arr[i] == ' ')
			cnt++;
	if (arr[0] == ' ')
		cnt--;
	if (arr[arr.size() - 1] == ' ')
		cnt--;
	cnt++;
	cout << cnt << endl;

}

이렇게 간단한 코드가 나옵니다.

 

c언어의 strtok이라는 함수를 이용해서 단어를 구분하는 방법도 있습니다. 

 

#include <stdio.h>
#include <string.h>

int main() {
	int count = 0,k=0;
	char arr[1000001];
	gets(arr);
	char *a;
	a = strtok(arr, " ");
	while (a != NULL) {
		count++;
		a = strtok(NULL, " ");
	}
	printf("%d\n", count);
	
}

 

꼭 직접 손으로 짜보시면서 연습하시길 바랍니다. 

반응형

'알고리즘 > 문자열 처리' 카테고리의 다른 글

[백준] 9935-문자열 폭발(C++)  (0) 2020.02.25
[백준] 2789-유학 금지(C++)  (0) 2020.02.25
[백준] 4949-균형잡힌 세상  (0) 2020.02.24
[백준] 1032-명령 프롬프트  (0) 2020.02.24

+ Recent posts