백준 1152번: 단어의 개수 / C++ 문제풀이

Been·2023년 11월 19일
0

백준

목록 보기
18/23

<C++ code>

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

int main()
{
	string word;
	int count = 1;

	getline(cin, word);

	for (int i = 0; i < word.length(); i++)
	{
		if (word[i] == ' ')
			count++;
	}

	if (word[0] == ' ')
		count--;

	if (word[word.length()-1] == ' ')
		count--;

	cout << count;
}

한 줄 요약 :

getline(cin,string) 함수를 이용해 공백이 포함된 문자열을 받고, .length() 함수를 이용해 문자열의 길이 안에서 단어의 개수를 센다.

풀이 :

  1. 문장을 입력받을 string word와 단어의 개수를 셀 int count를 만든다.
string word;
int count = 1;
/*이 때 count는 1부터 시작해야 한다. 
단어의 개수의 기준은 단어 사이의 공백인데, 
단어가 한단어일 경우, 공백이 없기 때문이다.*/
getline(cin, word);
  1. 문자열의 길이 안에서 단어 사이의 공백은 세어준다.
for (int i = 0; i < word.length(); i++)
	{
		if (word[i] == ' ')
			count++;
    }
  1. 문자열의 맨앞이나 맨뒤에 공백이 있을 경우 count에서 빼준다.
if (word[0] == ' ')
		count--;
if (word[word.length()-1] == ' ')
		count--;
	cout << count;
  1. count를 출력한다.

느낀점 :

모든 문제가 풀이를 알고나면 별거 아닌 것 처럼 보이긴 하지만 이번 문제는 특히 그게 심했다. 문법에 대한 무지를 하드코딩으로 풀어내려고했던 집착때문에 그랬던 것 같다. 문자열의 길이를 세는 함수 .length()를 어떻게하면 내가 직접 구현할 수 있을까 고민이 좌절되었다는 점에서 스스로에게 좀 실망했다. 여전히 문자열에 대한 이해도가 부족하다는 증거다. 다음에 문자열만 정리하는 포스팅을 올려봐도 좋겠다. 그러나 함수를 이용하는 것도 경제적인 코딩을 위한 훈련이 아닐까 위로해본다.

profile
콧콧코코콧코콧ㅅ

0개의 댓글