본문 바로가기

Algorithm3

온도의 최대값 (시간제한 : 1초) 문제 매일 아침 9시에 학교에서 측정한 온도가 어떤 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 알아보고자 한다. 예를 들어, 다음과 같이 10일 간의 온도가 주어졌을 때, 3 -2 -4 -9 0 3 7 13 8 -3 모든 연속적인 이틀간의 온도의 합은 다음과 같다. 이때, 온도의 합이 가장 큰 값은 21이다. 매일 측정한 온도가 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 계산하는 프로그램을 작성하시오. 입력 설명 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K 는 합을 구하기 위한 연속적인.. 2020. 9. 15.
이동평균 구하기 - 2 이동평균을 구하는 알고리즘을 서술함 - 2 알고리즘 설명 이동평균 - 1 의 알고리즘은, 매일매일 몸무게를 잰 므두셀라 할아버지의 입장에서 생각하면 이야기가 다름. 므두셀라는 969세까지 살았다고 하니 윤년을 치지 않더라도 969 X 365 = 353,685일을 살았습니다. 미두셀라 옹께서는 나이답게 스케일도 커서, 매일매일 지난 10만 일 (약 274년) 간의 이동평균을 알고 싶어 합니다. 그럼 전체 반복 횟수는 무려 253억 회가 됩니다! 어떻게 하면 좀 더 빠른 프로그램을 짤 수 있는지 설명 하겠습니다. 중요한 아이디어는 중복된 계산을 없애는 것 입니다. 므두셀라 옹의 몸무게를 다음과 같이 쭉 늘어놓았다고 가정하겠습니다. 날짜 0 1 2 3 ... M - 1 M M+1 몸무게 3.5 2020. 3. 25.
이동평균 구하기 이동평균(Moving Average)은 주식의 가격, 연간 국낸 총생산(GDP) 등 시간에 따라 변화하는 값들을 관찰할 때 유용하게 사용할 수 있는 통계적 기준입니다. ​ 시간에 따라 관찰된 숫자들이 주어질때 M - 이동 평균은 마지막 M개의 관찰 값의 평균 으로 정의됩니다. 따라서 새 관찰 값이 나오면 M - 이동평균은 새 관찰 값을 포함하도록 바뀝니다. #include #include using namespace std; // 이동평균 : N개의 측정치가 주어질 때 // 매달 M달 간의 이동 평균을 계산하는 프로그램 vector movingAverage1(const vector& A, int M) { vector ret; int N = A.size(); for (int i = M - 1; i < N;.. 2020. 3. 20.