(cpp) Baekjoon 1152번 문제 ‘단어의 개수’ - 구현,문자열

Baekjoon 1152번 문제 ‘단어의 개수’ - 구현,문자열


문제

풀이

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

using namespace std;
char a[1000001]; //문자열의 길이는 1,000,000을 넘지 않음.

int main() {
	scanf("%[^\n]s", a); //줄 바꿀때까지 문자열 입력받기.(띄어쓰기포함)
	int ans = 0;
	if (a[0] != ' ') { ans = ans + 1; }  //문자열 처음에 단어가 바로 등장하면 +1
	for (int i = 0; i < strlen(a); i++) {
		if (a[i] == ' ' && a[i + 1] != ' ') { ans = ans + 1; } //그 다음부터 '공백+문자'인 경우 ans+1
	}

	if (a[strlen(a)-1] == ' '){ans = ans - 1;} //마지막이 '공백'으로 끝나면 ans-1
	printf("%d", ans);

	return 0;
}

아래는 getline사용하여 string입력 받는 코드

#define _CRT_SECURE_NO_WARNINGS
#include<string>
#include<iostream>
using namespace std;
string a; //문자열의 길이는 1,000,000을 넘지 않음.

int main() {
	getline(cin, a);//줄 바꿀때까지 문자열 입력받기.(띄어쓰기포함)
	int ans = 0;
	if (a[0] != ' ') { ans = ans + 1; }  //문자열 처음에 단어가 바로 등장하면 +1
	for (int i = 0; i < a.length(); i++) {
		if (a[i] == ' ' && a[i + 1] != ' ') { ans = ans + 1; } //그 다음부터 '공백+문자'인 경우 ans+1
	}

	if (a[a.length() - 1] == ' ') { ans = ans - 1; } //마지막이 '공백'으로 끝나면 ans-1
	cout << ans;

	return 0;
}