반응형
전형적인 낚시문제..
앞, 뒤에 공백이 있을 수 있다는 사실을 모른채 뉴비들의 정답률을 뺏어간 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 |