[백준/BOJ] 23322. 초콜릿 뺏어 먹기 [Silver 2]

jychan99·2021년 12월 7일
0
post-thumbnail
  1. 초콜릿 뺏어 먹기

문제출처 : 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++을 새로 배우는과정이다보니 조금 어려운부분이 있었다 더 공부해야지..

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글