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
반응형
'프로그래밍_백준 > C++' 카테고리의 다른 글
(c++) 백준 2675 문자열 반복 (0) | 2023.02.20 |
---|---|
(c++) 백준 2577번 숫자 개수 세기 [몫, 나머지 활용] (0) | 2023.02.20 |
(c++) 백준 2577번 숫자의 개수 [string으로 변환, 범위 기반 for] (0) | 2023.02.20 |
(c++)백준 1152번 strtok()함수 사용, char자료형 (0) | 2023.02.19 |
(c++)백준 10818번 최소, 최대 구하기 (0) | 2023.02.17 |