ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 11024 ] 더하기 4 - 입출력
    알고리즘/BOJ 2021. 7. 26. 15:47

    < 입출력 > - < solve등급 >

     

    [ 11024 ]

    더하기 4

    수 N개가 주어졌을 때, N개의 합을 구하는 프로그램을 작성하시오.

     

    :: 입력

    첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, N(1 ≤ N ≤ 100)개의 수가 공백으로 구분되어서 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 또, 0으로 시작하는 수는 주어지지 않는다.

    :: 출력

    각 테스트 케이스마다 입력받은 수 N개의 합을 한 줄에 하나씩 입력받은 순서대로 출력한다.


     

    - try 1 

    : 그 전에 11023 문제를 풀고 eof 처리하는 걸 배워서 

    비슷한 형식이라 생각해서 그렇게 풀어봤음 근데 eof 를 체크하면 반복문을 탈출해야하는데 탈출을 안함 ㅜㅜ

    #include <string>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    #define endl "\n"
    
    int main() {
        int n = 0, total =0;
        vector<int> nums;
        cin >> n;
        for (int i = 0; i < n; i++) {
            int k = 0;
            cin >> k;
            while (cin.eof() != true) { total += k; }
            nums.push_back(total);
            total = 0;
        }
    
        for (int i = 0; i < nums.size(); i++) {
            cout << nums[i] << endl;
        }
    }

     

      아이디어  

    우선 내가 생각한 방식으로 푸는 게 아니라 한 줄씩 입력 받아서 숫자를 구분하는 방식이었다.

    11023번에서 생각했던 솔루션을 이쪽에 써야햇음 ,,

     

    cin 에 입력된 정수와 \n이 들어간다는 사실을 알았다.

    그리고 cin은 \n을 완전히 무시한다는 사실도 알았다.

    그래서 내가 짰던 코드에서 eof가 안 먹었던건가

    몇번 실험을 해봐야 할 듯 ! 

     

      정답  코드  

    #include <string>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    #define endl "\n"
    
    int main() {
        int t;
        cin >> t;
        //cin의 입력버퍼에는 정수 t와 \n이 들어간다 얘는 안 없어진다 따라서 getline()에서
        //인자입력을 default로는 \n으로 구분하기 때문에 cin의 입력버퍼를 비워줘야 된다.
        cin.ignore();
        //cin의 입력버퍼를 비워주는 함수이다.
        while (t--)
        {
            string n;
            int sum = 0;
            getline(cin, n);
            string tmp = "";
            int nlen = n.size();
            for (int i = 0; i < nlen; i++) {
                tmp += n[i];
                if (n[i] == ' ' || i == nlen - 1)
                {
                    sum += stoi(tmp);
                    tmp = "";
                }
            }
            cout << sum << '\n';
        }
    }
준생e