[홍익프로그래밍경진대회] 초콜릿 뺏어 먹기
1. 문제
https://www.acmicpc.net/problem/23322
2. 아이디어
K + 1번째 사탕을 i - K번째 통에 있는 개수와 똑같아 질 때까지 먹고 정렬한다.
정렬 후, 다시 K + 1번째 사탕을 살펴보고 i - K번째 통에 있는 사탕 갯수와 다르다면 먹는다.
이렇게 K + 1번째 사탕통 먹고 정렬하기를 반복하다가 K + 1사탕통과 i - K 사탕 개수가 같아지면 K + 2번째 사탕통을 먹기 시작한다.
3. 풀이과정
1) ⭕RIGHT⭕
- 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N, K;
cin >> N >> K;
vector<int> a(N + 1);
a[0] = 0;
for (int i = 1; i <= N; ++i) cin >> a[i];
int candy = 0;
int day = 0;
for (int i = K + 1; i <= N; ++i) {
while (1) {
if (a[i] != a[i - K]) {
day++;
candy = candy + a[i] - a[i - K];
a[i] = a[i - K];
sort(a.begin(), a.end());
}
else break;
}
}
cout << candy << " " << day;
return 0;
}
Author And Source
이 문제에 관하여([홍익프로그래밍경진대회] 초콜릿 뺏어 먹기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pyh-dotcom/홍익프로그래밍경진대회-초콜릿-뺏어-먹기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)