본문 바로가기
프로그래밍 _공부자료./C++ 공부

배열의 숫자 의 차 최대치 구하기.

by 대구부자 2019. 11. 27.
반응형





문제)

매일 아침 9시에 학교에서 측정한 온도가 어떤 정수의 수열로 주여 졌을때 , 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 알아보고자 한다.

예를들어 다음과 같이 10일간의 온도가 주어졌을 때 , 3.-2.-4.-9,0,3,7,8,-03

의 모든 연속 적인 이틀 간의 온도의 합은


3+2 =1


-2+-4= -6


-4+-9=-13


-9+0=-9


0+3 =3


3+7 =10


7+13 =20


13+8 =21 


8-3 =6








      각 숫자의 합을 구한 것은 위의 예시와 같다 .


     입력 값으로 day에 며칠지 연속적으로 구할지 입력 받는다.




 입력 받은 날짜로 몇일씩 더해서 합을 해야 할까 ?


 => day로 입력 받는다. 따라서 전범위의 배열에 들어 있는 날짜에 입력 받은 날짜수 만큼 더해주면 된다.



구현 방식은 2중포문을 이용 하였고 ,

첫 포문의 범위는 총 날씨의 온도값을 읽어 들인다.

따라서 첫번째 포문의 첫 날짜와 밑에  포문의 범위가 더해야 하는 날짜수를 의미한다.


 i =0 일대 0일 이라고 본다면,

       안쪽의  포문을 탄다면  0일 1일 2일 이 될것이고 포문이 끝난다면,



  i=1 이 되고 다시 안쪽 포문을 타게 되고

  안쪽 포문은 1일 2일 의 합을 더하게 될것이다.



더한 값은 temp_1 에 누적해서 누적 연산자 += 는 사용하게 됨으로서 temp_1에 저장 될것다.

이후 조건문에 temp_2와 비교 하게 되며 만약 비교 하게 된다면,

비교 이후 0으로 temp_1 초기화가 되야 한다.


=> 이유인즉 , 2일치의 누적치 만 있으면 되기 때문에 temp_2에 옴겨 닮고 다음 2일치 계산을 하기 위해서 초기화 하여

야 한다. 


 

 

 


 

출력 값을 보면,

첫 째줄에  총 일수의 온도 값, 더해야할 일수 ,

둘 째 줄에 일수별 온도,

셋째 줄에 2일치의 온도 값 중에 최댓 값이 출력 되는 것을 알수 있다.


반응형

댓글