-
백준 2847번 : 게임을 만든 동준이 (C 언어)c c++ 언어 공부 2023. 9. 13. 14:29
https://www.acmicpc.net/problem/2847
2847번: 게임을 만든 동준이
학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어
www.acmicpc.net
Code:
123456789101112131415161718192021222324252627282930#include <stdio.h>int main() {int n;int count = 0;scanf("%d", &n);int arr[101] = { 0, };for (int i = 0; i < n; i++){scanf("%d", &arr[i]);}while (1){if (n == 0){break;}int temp = n - 1;for (int i = temp - 1; i >= 0; i--){if (arr[temp] <= arr[i]){count += (arr[i] - arr[temp] + 1);arr[i] -= (arr[i] - arr[temp] + 1);}}n--;}printf("%d", count);}cs 문제 설명:
동준이는 게임에서 레벨을 클리어할 때마다 주어지는 점수를 올바른 순서로 조정하려고 합니다. 이때, 각 레벨의 점수를 감소시키는데 필요한 총 횟수를 구해야 합니다. 각 레벨의 점수는 양수이며, 1만큼 감소시키는 것이 1번의 조정 횟수입니다. 모든 레벨을 클리어할 때 주는 점수를 최소화하려면 어떻게 해야 하는지 계산해야 합니다.
코드 설명:
- 먼저, 레벨의 수 n을 입력 받습니다.
- 배열 arr을 선언하고, 각 레벨의 점수를 입력 받습니다.
- 무한 루프를 사용하여 각 레벨의 점수를 조정합니다. 루프는 모든 레벨을 클리어할 때까지 반복됩니다.
- 현재 레벨 temp와 그 이전 레벨을 비교하며, 만약 현재 레벨의 점수가 이전 레벨보다 크거나 같다면, 이전 레벨의 점수를 증가시켜야 합니다. 이때, 증가시키는 횟수를 count에 더하고, 이전 레벨의 점수를 조정합니다.
- 레벨의 수를 하나씩 줄이면서 모든 레벨을 클리어할 때까지 반복합니다.
- 최종적으로 count를 출력하여 필요한 총 점수 조정 횟수를 표시합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 18429번 : 근손실 (C 언어) (0) 2023.09.14 백준 13866번 : 팀 나누기(C 언어) (0) 2023.09.14 11945번 : 뜨거운 붕어빵 (C 언어) (0) 2023.09.13 백준 1189번 : 컴백홈 (C 언어) (0) 2023.09.12 백준 9316번 : Hello Judge (C 언어) (0) 2023.09.12