본문 바로가기

프로그래밍_백준/C++

(c++)백준 1152번 단어의 개수/getline함수, string 자료형 사용

728x90
반응형

백준의 1152번 문제!

 

단어의 개수를 세는 문제입니다! 여기서 주의할 점은 맨 처음, 마지막이 띄어쓰기인 경우를 구분해야 합니다!

 

함수는 getline 함수를 사용했습니다.

그리고 string를 사용하기 위해 #include<string>을 썼습니다!

 

혹시 getline을 모르시는 분을 위해 설명을 조금 하겠습니다!

cin은 공백 이전까지만 입력을 받아서 공백을 포함해서 받을 수 없습니다.

 

반면에 getline() 함수는 가능하죠!

getline()함수의 특징은 입력 가능한 최대 문자 수를 지정하지 않아도 됩니다!

그리고 delimiter를 만나기 전까지 모든 문자를 string에 저장합니다!

 

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

int main() {
	int num=1;//첫 단어 포함
	string str;
	getline(cin, str);
	
	for (int i = 0; i < str.length(); i++) {//str입력 문장 탐색
		if (str[i] == ' ') {//띄어쓰기로 단어 구분
			num++;
		}
	}
	
	if (str[0] == ' '){//첫 시작을 띄어쓰기 했을 경우
		num--;
	}
	
	if (str[str.length() - 1] == ' ') {//마지막에 띄어쓰기를 했을 경우
		num--;
	}
	cout << num;	
}

띄어쓰기로 단어를 카운트를 하는 방식이라서 첫 단어를 미리 카운트합니다!

그리고 첫 시작, 마지막 띄어쓰기를 한 경우 num--를 하면 정답입니다!

 

그리고 사실 궁금한 점이 있는데... string 자료형을 strtok함수 같은 것으로 해결할 수 있을까요...?

이건 잘 모르겠네요..

728x90
반응형