Blog Content

    티스토리 뷰

    1152번 백준(Baekjoon)

    <문제>


    영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오.


    <정답 코드>


    그냥 띄어쓰기 개수로 하면 되는 거 아닌가 했다가 한참 걸린 문제..

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <iostream>
    #include <cstdio>
     
    using namespace std;
     
    int main(void) {
        int ret = 0;
        int num = 0;
        char str[1000000= {0, };
        /* 입력을 EOF까지만 받도록 함
           scanf에 아무 입력도 없을 경우 -1을 리턴한다*/
        while(1) {
            ret = scanf("%s", str);
            if(ret == EOF)
                break;
            num++;
        }
        printf("%d", num);
    }
    cs


    <번외>


    1
    2
    3
    4
    5
    6
    7
    8
    9
    while(1) {
        ret = scanf("%s", str);
        printf("%d\n", ret);
        if(ret == EOF)
            break;
        num++;
        printf("====\n");
        printf("%s\n", str);
    }
    cs


    while문을 이런식으로 바꿔서 보면 scanf가 어떤식으로 작동하는지 알 수 있다.

    Ctrl + c를 누르는 순간 -1이 출력되면서 끝남.




















    'C++ 문제풀이' 카테고리의 다른 글

    1697번 백준(Baekjoon)  (0) 2018.09.24
    1929번 백준(Baekjoon)  (0) 2018.09.07
    1157번 백준(Baekjoon)  (0) 2018.09.06
    8958번 백준(Baekjoon)  (0) 2018.09.05
    1260번 백준(Baekjoon)  (0) 2018.08.30

    Comments