[코딩테스트 C++] 게임을 만든 동준이
오늘의 문제
https://www.acmicpc.net/problem/2847
게임을 만든 동준이
접근 방식
- 가장 낮추는 횟수를 줄이려면, 맨 끝에서부터 진행해서 그 다음 수(post)보다 커지는 경우, post 보다 1 작은 값으로 낮춰주면 된다.
나의 풀이
#include<iostream>
using namespace std;
int n;
const int MAX = 100;
int arr[MAX];
int solution(){
int answer = 0;
int post = arr[n-1];
for(int i=n-2;i>=0;i--){
if(post <= arr[i]){
answer += arr[i]-post+1;
post--;
}else{
post = arr[i];
}
}
return answer;
}
다른 풀이
#include<cstdio>
int n,a[100],r;
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", a+i);
for (int i = n-1; i; i--) if (a[i-1] >= a[i]) r+=a[i-1]-a[i]+1,a[i-1] = a[i] - 1;
printf("%d", r);
return 0;
}
배울 점
- 이분은 post를 따로 두지않고 배열 안에서만 풀이를 하셨다. 어케 저렇게 한줄로 하시는지
Author And Source
이 문제에 관하여([코딩테스트 C++] 게임을 만든 동준이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@huijae0817/코딩테스트-C-게임을-만든-동준이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)