본문 바로가기
코딩테스트/programming_C++

baekjoon #1152_단어의 개수_c++

by prometedor 2021. 10. 26.
  • string 라이브러리의 getline()
    • 원하는 구분자(delimiter)에 도달할 때 까지 모든 문자열을 입력 받아 하나의 string 객체에 저장

getline(입력스트림 오브젝트, 문자열을 저장할 string객체, 종결 문자);
ex) getline(cin, str);

 

#include<iostream>
#include<string>

int main() {
std::string str;
std::getline(std::cin, str,'\n');

int cnt = 1;  // 문자열이 공백이 아닌 단어로 바로 시작 할 경우 단어의 개수는 1부터 시작
for (int i = 0; i < str.length(); i++) {
if (str[i] == ' ')
cnt++;
}

if (str[0] == ' ') // 문자열 첫 부분에 공백이 있을 경우
cnt--;
if (str[str.length() - 1] == ' ')
cnt--;

std::cout << cnt;
}

문자열은 공백으로 시작하거나 끝날 수 있다고 했으므로, 문자열 앞에 공백이 있을 경우와 문자열 뒤에 공백이 있을 경우로 나누어 비교

 

ex)The Curious Case of Benjamin Button

The 가 cnt = 1 (단어 1개)

-> 공백의 개수만큼 cnt를 증가시키면 단어의 개수를 알 수 있음

공백이 5개이므로 cnt = 1에서 5번 증가 => cnt = 6

결국, 단어는 6개임을 알 수 있음

 

- 시작이 공백일 경우, 문자열 처음이 단어가 아니므로 cnt를 1 감소시켜줘야 함

- 끝이 공백일 경우, 배열의 크기에서 1을 뺀 위치는 문자열의 가장 마지막 문자가 공백으로, 단어가 아니므로 cnt를 1 감소시켜줘야 함

 

'코딩테스트 > programming_C++' 카테고리의 다른 글

baekjoon #5622_다이얼_c++  (0) 2021.10.26
baekjoon #2908_상수_c++  (0) 2021.10.26
baekjoon #1157_단어 공부_c++  (0) 2021.10.26
baekjoon #10809_알파벳 찾기_c++  (0) 2021.10.25
baekjoon #11720_숫자의 합_c++  (0) 2021.10.25