(TIL) 20210518
2021. 5. 18. 23:59ㆍTIL(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 |