인프런 커뮤니티 질문&답변

jhyunkuk님의 프로필 이미지
jhyunkuk

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-H

2559수열문제 관련해서 질문이 있습니다.

작성

·

187

0

 i 는 1부터 시작해서 n까지 누적합을 구하는공식은 이해가됐는데그 이후에 for(int i=k; i<n; i++){ret = max(ret, psum[i] - psum[i - k]; 이부분에 대해서 그림으로 그려보려고 해도 잘 이해가 되지 않습니다..개념 강의를 참고해도 쉽지않네요혹시 이부분에 대해서 그림으로 설명 부탁드려도 될까요  -학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

이렇게 이해를 하시면 됩니다.

psum[i] = i번째까지의 모든 합

psum[i - k] = i - k번째 까지의 모든 합

입니다.

자 여기서

psum[i] - psum[i - k] 를 하게 되면 i번째부터 i - k번째까지의 부분합이 되는 것이죠.

 

그림으로 그려보면 다음과 같이 됩니다.

image

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

jhyunkuk님의 질문은 2559 수열 문제와 관련된 특정 부분의 이해도를 높이기 위한 도움을 요청하는 내용으로 보입니다. 질문에서 언급된 코드

for(int i=k; i<n; i++){
    ret = max(ret, psum[i] - psum[i - k];
}

는 누적합을 활용해 특정 구간의 합을 효율적으로 계산하기 위한 로직입니다. 여기서 psum 배열은 인덱스 0부터 i까지의 원소 합을 저장하고 있으며, ret은 구간 합의 최대값을 갱신하기 위해 사용되는 변수입니다.

유사한 질문과 답변이 위의 지식공유자가 제공한 질문들 중에서 발견되었습니다. 특히 1-H 문제 질문 (https://www.inflearn.com/questions/770808)에 대한 답변이 유사한 내용을 다루고 있으며, 다음과 같이 설명되고 있습니다:

지식공유자는 psum[i]가 1부터 i번째 요소까지의 합을 의미하며, 여기서 psum[i-k]를 빼면 (i-k+1)부터 i번째 요소까지의 합을 구할 수 있다고 설명합니다. 이를 통해 주어진 구간의 합을 최대한 빠르게 계산할 수 있습니다.

그래픽적인 설명에 대한 요청이 있으신만큼 시각적인 설명이 포함된 유사한 답변을 찾기 어려울 경우, 이 문제에 대한 더 자세한 세부 사항을 요청해야 할 수도 있습니다.

본 AI가 제공할 수 있는 가장 관련된 정보를 바탕으로, 질문자님이 요청하신 조건에 부합하는 답변이 다음과 같이 추천됩니다:

이러한 기존 답변들은 psum 배열과 연속된 구간의 합을 계산하는 과정에 대한 설명을 담고 있어, jhyunkuk님의 질문에 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jhyunkuk님의 프로필 이미지
jhyunkuk

작성한 질문수

질문하기