문제
공백으로 구분된 단어가 문자열로 입력된다
처음이나 끝에 공백이 있을 수도 있다
문제 해결을 위한 준비물
cin.getline - 공백이 포함된 문자열을 입력하기 위함
코드
#include <iostream>
using namespace std;
#define MAX_CHAR 1000001
int main()
{
char str[MAX_CHAR] = {' '};
int count = 0, i = 0;
bool isGap = true;
cin.getline(str, MAX_CHAR);
if(str[0] == ' ') i++;
for(; str[i] != '\0'; i++){
if(str[i] == ' ') isGap = true;
else if(isGap) {
isGap = false;
count++;
}
}
cout << count;
return 0;
}
풀이
기본기
cin.getline() : 공백이 포함된 문자열을 char[]로 입력 받을 수 있다 stirng으로 저장할 수 있는 string.getline도 있다
'\0' : 문자열의 끝을 알리는 문자이다
풀이
- 문자열 안에 공백으로 구분된 단어를 구별할려면 "공백+문자"인 부분을 카운트하면 된다 그래서 isGap변수를 사용해서 앞부분에 공백이 있는지 없는지 체크한다
- 문자열 앞부분에는 공백이 없을 수도 있기 때문에 공백이 있다고 isGap변수에 체크하고 앞부분에 공백이 있다면 이부분을 건너뛴다
c++에는 문자열을 나눠주는 split()가 없어서 너무 아쉽다
'프로그래밍 문제집 > 백준' 카테고리의 다른 글
1157번-단어 공부 (0) | 2022.01.22 |
---|---|
2675번-문자열 반복 (0) | 2022.01.21 |
1463번-1로 만들기 (0) | 2022.01.19 |
12865번-평범한 배낭 (0) | 2022.01.17 |
10773번-제로 (0) | 2022.01.17 |