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

김현우님의 프로필 이미지
김현우

작성한 질문수

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

1-H

1-H 질문있습니다

작성

·

107

0

http://boj.kr/a2bc8496dc1046a495a22dd0185ad515

여기 제 코드입니다.

a만큼의 크기를 가진 배열 arr을 사용해서

가장 최근의 a일의 온도를 저장합니다.

최근 a일간의 온도의 최대값은 결국 새로 들어온 값이 가장 오래된 날짜보다 높다면 최대값이 변경되는것이니

해당 부분을 if문으로 처리해서 sum값을 변경시켰는데

오답이 나옵니다.

구간마다 sum을 계산하여 max값을 비교한다면 맞다고 하는데

제 방식이 왜 틀렸는지 이해가 가질 않습니다.

답변 2

0

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

안녕하세요 현우님 ㅎㅎ

일부 로직에 문제가 있어 제가 다듬어봤는데요 ㅎㅎ

max_sum, sum 부분 로직

참고부탁드립니다. (주석도 달았어요~)

 

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, a;
    cin >> n >> a;

    vector<int> arr(a);
    int sum = 0; 
    for (int i = 0; i < a; ++i) {
        cin >> arr[i];
        sum += arr[i];
    } 
    int max_sum = sum;  
    for (int i = a; i < n; ++i) {
        int tmp;
        cin >> tmp;  
        sum = sum - arr[i % a] + tmp; 
        arr[i % a] = tmp; 
        // 이렇게 sum을 정한 다음에 max_sum을 정의해야 합니다. 
        if (sum > max_sum) {
            max_sum = sum;
        }
    }

    cout << max_sum;
    return 0;
}

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


0

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

김현우님의 질문에 대한 답변으로, 구간마다 합을 계산하거나 최대 온도 값을 찾는 문제와 관련하여 지식공유자님의 기존 답변 중 유사한 내용을 포함하고 있는 답변을 찾았습니다. 여기서는 부분합을 계산하거나 최대값을 구하는 방법에 대한 이해를 돕기 위해 실제로 코드 검토 및 수정을 제안한 경우를 소개하겠습니다.

예를 들어, “[1-H]시간 초과 관련해서 질문드립니다” 글에서는 문제 해결 방법으로 prefix sum(부분합) 개념을 사용하는 것을 제안했습니다. 성능 개선을 위해 로직을 변경하는 방법이나 다른 자료형을 사용하는 방법 등 추가적인 대처 방안도 함께 논의되었습니다. 이와 관련하여 구간마다 sum을 계산하거나 최대값을 비교하는 방식에 대한 질문자님의 접근 방식에서 오는 혼란을 이해하고 해결하기 위한 방향을 제시해 줄 수 있을 것입니다.
- 질문 링크: [1-H]시간 초과 관련해서 질문드립니다

또한, “1-H 맞왜틀 질문” 게시물에서도 비슷한 문제 상황을 두고 정답 코드와 오답 코드 사이의 차이점을 분석하며, 특정 로직의 처리 방식에서 발생할 수 있는 문제점을 지적하며 기술적인 지도를 제공하였습니다. 이는 질문자님이 겪고 계신 문제와 유사한 상황에서의 오류를 해결하기 위한 힌트를 줄 수 있을 것입니다.
- 질문 링크: 1-H 맞왜틀 질문

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

김현우님의 프로필 이미지
김현우

작성한 질문수

질문하기