문제


공백으로 구분된 단어가 문자열로 입력된다 

처음이나 끝에 공백이 있을 수도 있다  

문제 해결을 위한 준비물


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' : 문자열의 끝을 알리는 문자이다

 

풀이

  1. 문자열 안에 공백으로 구분된 단어를 구별할려면 "공백+문자"인 부분을 카운트하면 된다 그래서 isGap변수를 사용해서 앞부분에 공백이 있는지 없는지 체크한다
  2. 문자열 앞부분에는 공백이 없을 수도 있기 때문에  공백이 있다고 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

+ Recent posts