본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 1152번: 단어의 개수 -C++

728x90

[백준알고리즘] 1152번: 단어의 개수 -C++

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

 

1152번: 단어의 개수

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

www.acmicpc.net

심오한 c++의 세계..

 

string type을 parsing 해주기 위해서 <sstream> 헤더에 있는 stringstream 을 사용했다.

추가로 istringstream, ostringstream이 있는데 각각 입력 형식과 출력 형식을 정해주는 용도 정도로 사용하는 것 같다.

 

stringstream의 경우에는 stream 타입이기 때문에 <string>헤더에 정의된 getline 함수의 첫 번째 인자로 들어갈 수 있다.

getline 함수의 경우에는 각 인자가 (입력받을 스트림 / 입력을 저장할 string 객체 / 구별자)를 의미한다. 세 번째 인자가 없는 경우에는 자동으로 '\n'로 인식해서 한 줄을 입력받도록 사용한다.

 

예제 입력 2와 같이 연속으로 공백이 들어오는 경우를 제외하기 위해서 파싱한 문자열의 길이가 0보다 클 때만 카운트를 세 주었다.

#include <iostream>
#include <string>
#include <sstream>

int main(void)
{
	std::string str;
	std::getline(std::cin, str);

	std::stringstream ss(str);
	std::string temp;
	int answer = 0;
	while (std::getline(ss, temp, ' '))
		if (temp.length() > 0)
			answer++;
	
	std::cout << answer;
}

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

 

 

 

728x90