본문 바로가기
CodingTest/백준

[c++] 백준 - 1152: 단어의 개수

by Daybreak21 2023. 5. 2.

1152번: 단어의 개수 (acmicpc.net)

 

1152번: 단어의 개수

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

www.acmicpc.net

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

int main() {
	char s[1000002];
	cin.getline(s, 1000002, '\n');
	char* p = s; int result = 1;

	while (*p != '\0') {
		if (*p == ' ') result++;
		p++;
	}
	//단어사이에 있는 공백이 아닌 경우의 공백의 수만큼 빼준다. 
	if (s[0] == '\0' || s[0] == ' ') result--;
	if (s[strlen(s) - 1] == ' ') result--;

	cout << result;
	return 0;
}

 

문자열 배열을 가르키는 포인터 p를 선언하고 p의 값을 한칸 씩 옮기면서 검사하였다. 

 

※C언어에서는 문자열의 끝을 개행문자가 아닌 NULL ('\0')문자로 판단한다. 

getline을 받을때 개행문자로 문장을 구분해서 s의 형태가 "~문자열~\n"이라고 잘못생각하여서 초반 코드가 복잡하였다..