(TIL) 20210518

2021. 5. 18. 23:59TIL(Today I learned)

반응형

1.Facts(한 것)


  • 학교 알고리즘 퀴즈 풀기
  • 백준 문제풀기
  • 학교 수업듣기

2.Findings(배운 것)


오늘 푼 백준 문제는 스택을 활용해서 푸는 아주 기초적인 문제였는데,

문제의 요구사항 중에 스택에 있는 값의 합을 출력해야하는 것이 있었다.

아무 생각 없이 문제를 풀었다면 st.pop()을 하면서 sum += 연산을 진행했을 것이다.

하지만 <numeric>헤더 파일에 std :: accumulate()함수가 있는 것을 발견하고는 

스택 말고 vector를 사용하기로 했다.

 

#include <iostream>
#include <numeric>
#include <vector>

using namespace std;

vector<int> v;

/**
 input : 첫 번째 줄에 정수 k, 이후 k개의 줄까지 정수 입력
 입력이 0일 경우 st.top()을 제거.
 output : 스택 원소 합 출력.
 */

int main() {
    int k;
    cin >> k;
    for(int i = 0; i < k; ++i) {
        int n;
        cin >> n;
        if(n == 0) {
            v.pop_back();
        }
        else {
            v.push_back(n);
        }
    }
    printf("%d", accumulate(v.begin(),v.end(), 0));
}

 

accumulate()함수의 원형은 다음과 같다.

accumulate함수의 첫번째 인자는 배열의 첫번째 값, 두 번째 인자는 배열의 마지막 값, 세 번째 인자는 sum의 초기값이다.

template <class InputIterator, class T>
   T accumulate (InputIterator first, InputIterator last, T init)
{
  while (first!=last) {
    init = init + *first;  // or: init=binary_op(init,*first) for the binary_op version
    ++first;
  }
  return init;
}

 

3.Feeling(느낀 점)


요즘 무기력한 상태가 오래가는 것 같다.

빨리 털고 일어나고 싶다!

 

4.Affirmation(자기 선언)


  • 나는 매일 발전하고 있다.
  • 내가 지금 사용하는 시간은 내가 더 넓은 시야를 갖게 할 디딤돌이다.
반응형

'TIL(Today I learned)' 카테고리의 다른 글

(TIL) 20210520  (0) 2021.05.21
(TIL) 20210519  (0) 2021.05.20
(TIL) 20210517  (0) 2021.05.17
(TIL) 20210515  (0) 2021.05.15
(TIL) 20210513  (0) 2021.05.14