문제)
매일 아침 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일치의 온도 값 중에 최댓 값이 출력 되는 것을 알수 있다.
'프로그래밍 _공부자료. > C++ 공부' 카테고리의 다른 글
C++ 버블정렬 (0) | 2019.12.03 |
---|---|
백준넷 10828번 push pop back 이중연결 리스트로 구현하기. (0) | 2019.11.28 |
은행 ATM기 C++로 작성. (0) | 2019.11.25 |
역 방향 행렬 360도 회전하기. (0) | 2019.11.25 |
OR연산을 활용한 비트 연산 배열에 담아 출력하기! (0) | 2019.11.24 |
댓글