c++ accumulate() 에 관하여.

문제를 풀다가 

 

cout<<accumulate(dp[n],dp[n]+10,0)%10007; 형태의 코드를 접하게 되었고

이 풀이에서 처음으로 accumulate  라는 함수의 활용을 보게 되었다. 

 

이 함수에 대해서 검색해보았다. 

 

accumulate(nums.begin(),nums.end(),0); 에서 알 수 있는건, 

accumulate는 누적합을 계산해주는, numeric 헤더에 정의된 함수이고, 

이 함수에서 first는 포함, last는 불포함, 그리고 init 값은 누적의 시작값을 나타낸다는걸 알 수 있다. 

 

이런 문제의 풀이에서 결국 끝항이 0일때, 1일때, ... 끝항이 9일때 등으로 쭉쭉 진행하면서 그 값들을 모두 합친게

결국 원하는 출력값이 되므로, 그걸 일일이 for문으로 순차적으로 더해주는 코드를 작성해도 되지만, 

이렇게 numeric 헤더에 존재하는 accumulate 함수를 사용하여서 계산한 것으로 보여진다. 

그동안은 모두 for문으로 int ans=0; 형태로 설정하고 누적합을 구하는 풀이였는데, 

accumulate 라는 함수를 통해서 조금 더 간단하게 표현 할 수 있겠다는걸 알게 되었다. 

이 함수에 익숙해져서 다음에는 내가 한번 사용해보도록 하고, 이런 풀이를 보고 accumulate를 만난다면

누적합을 numeric 헤더에 있는 accumulate 함수를 이용해서 구하고 있구나 하고 이해해보도록 하자. 

 

  Comments,     Trackbacks