728x90
이분 탐색으로 푸는 문제는 최대나 최소를 구한 문제가 많이 나온다고 한다. 그래서 이분 탐색을 풀려고 했는데... 어려워서 문자열 문제부터 하고 넘어가야겠다는 생각이 들었다. 그래서 오늘의 문제는~~
문제 1152번
https://www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열
www.acmicpc.net
공백을 포함한 문자열을 받아야 하기 때문에 getline 함수를 사용해줘야 한다. getline(cin, 변수); 이런 식으로 사용하면 공백을 포함한 문자열을 입력받을 수 있다.
처음에는 단어를 세려고 했는데, 생각해보니까 공백은 연속해서 나오는 경우가 없으니까 공백을 세는 것이 나을 것 같다.
문자열은 공백으로 시작하거나 끝날 수도 있다고 쓰여있으니까 맨 앞과 맨 뒤를 뺀 나머지 부분만 반복문을 돌려 공백의 개수를 확인한다. 그리고 공백을 세는 것이기 때문에 count의 초기값은 1로 해준다(공백이 2개면 단어는 3개가 되기 때문에).
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
int count = 1;
if (s[0] == ' ' && s.length() == 1) {
cout << 0;
return 0;
}
for (int i = 1; i < s.length() - 1; i++) {
if (s[i] == ' ') {
count++;
}
}
cout << count;
return 0;
}
728x90
'백준 > C++' 카테고리의 다른 글
[C++] 백준 1259번 - 팰린드롬수 (0) | 2024.04.02 |
---|---|
[C++] 백준 1159번 - 농구 경기 (2) | 2024.04.01 |
[C++] 백준 3052번 - 나머지 && 백준 11720번 - 숫자의 합 (0) | 2024.03.30 |
[C++] 백준 2577번 - 숫자의 개수 (0) | 2024.03.30 |
[C++] 백준 1120번 - 문자열 (0) | 2024.03.28 |