728x90
1152번!
단어의 개수
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 128 MB | 241093 | 72670 | 57819 | 31.374% |
문제
영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
입력
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.
The Curious Case of Benjamin Button >>> 6
해결방법
1. 문자를 받는다!
2. 문자를 공백을 세어준다!
3. 문자의 개수 = 공백의 개수 +1!
단순히 글자수를 세는 문제였습니다!
하지만 여기서 문제가 생겼습니다...
기존 cin>> str 사용시 스페이스바(공백)를 기준으로 다음 str으로 인식해버려서
공백이 나온 순간 그 다음 내용은 저장을 못하더라구요.....
여기서 사용한 방법이 getline()함수!
공백을 포함하여 문자열을 입력받을수 있게 도와주는 함수입니다
getline(cin, str);
여러 입력함수가 있으니 아래 링크로!
*all
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
getline(cin, str);
int num = 1;
for (int i = 0; i < str.length(); i++) {
if (str[i] == ' ')
num++;
}
if (str[0] == ' ')
num--;
if (str[str.length() - 1] == ' ')
num--;
cout<<num<<endl;
}
'코딩테스트!(프로그래머스 & 백준) > 백준 - C++' 카테고리의 다른 글
백준 2231 분해합 (C++) (0) | 2022.09.06 |
---|---|
백준 2798 블랙잭 (C++) (0) | 2022.09.06 |
백준 11729 하노이탑 (0) | 2022.09.05 |
백준 5622번 다이얼 (0) | 2022.06.23 |
백준 - 단어 공부 (0) | 2022.06.22 |
댓글