문제출처 : https://www.acmicpc.net/problem/23322
code
#include <iostream>
#include <cstdio>
#include <vector> //벡터를 쓰기위한 헤더파일
#include <algorithm> //정렬함수를 쓰기위한 헤더파일
using namespace std;
int main()
{
//C++ 알고리즘을 풀 때 실행 속도를 높이기 위해 아래와 같은 구문을 쓴다.
ios::sync_with_stdio(false);
cin.tie(NULL);
//ios::sync_with_stdio구문은 C의 stdio와 C++의 iostream을 동기화 시켜주는 역할을 하는데,
//이때, iostream과 stdio버퍼를 모두 사용하기 때문에 딜레이가 발생한다.
//따라서 동기화를 비활성화 해줌으로서 C++만의 독립적인 버퍼가 생성되어 C의 버퍼를 사용할순없지만,
//사용하는 버퍼의 수가 줄어들어 실행속도가 빨라진다.
//알고리즘문제는 대부분 싱글 쓰레드환경이기 때문에 문제가 발생하지는 않을 확률이 높다.
//비활성화시키면, cin과 scanf, gets, getchar등을 같이 사용하면 안되고,
//cout과 printf puts putchar를 같이 사용하면안된다.
//cin.tie(null)코드는 cin과 cout의 묶음을 풀어준다.
/*
예를들어,
cout<<"이름을 입력하세요";
cin>>name;
이코드에서는 이름을 입력하세요라는 구문이 먼저출력되고 입력을 받는게 기본이라면,
cin.tie(null)을 추가하면 , 묶음이 풀리면서,
'이름을 입력하세요'가 출력되지도 않았는데, 먼저 이름을 입력받는 경우가 발생할 수 있다.
*/
int K, N;
int chocolate = 0, days = 0;
cin >> N >> K;
vector<int>arr(N + 1);
arr[0] = 0;
for (int j = 1; j <= N; j++)
cin >> arr[j];
for (int i = K + 1; i <= N; i++)
while (1)
{
if (arr[i] != arr[i - K])
{
chocolate += arr[i] - arr[i - K];
days++;
arr[i] = arr[i - K];
sort(arr.begin(), arr.end());
}
else
break;
}
cout << chocolate << " " << days;
return 0;
}
알고리즘은 그렇게 어렵진 않은데 ,C++을 새로 배우는과정이다보니 조금 어려운부분이 있었다 더 공부해야지..