2023. 5. 7. 16:34, 알고리즘/BOJ
문제를 풀다가
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 함수를 이용해서 구하고 있구나 하고 이해해보도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
boj 9251번 LCS// 이해가 가도록 도움을 줄 참고 자료가 있는 블로그들 모음. (0) | 2023.05.09 |
---|---|
c++에서 10억을 표현하는 손쉬운 방법. (0) | 2023.05.08 |
boj 9465// 이 문제의 풀이법에 대해서 잘 이해를 해야겠다. (0) | 2023.05.06 |
시간복잡도의 표현에 관하여. (0) | 2023.05.05 |
c++ boj 1890번 문제를 통해서 알게된 간략하게 표현한 변수의 중요성. (0) | 2023.05.04 |
Comments, Trackbacks