일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 프로세스 상태
- algorithm
- effective C++
- Zenject
- binary search
- Gold
- knapsack Problem
- Bronze
- Euclidean
- BOJ
- 8-Puzzle
- programmers
- 프로그래머스
- stack
- level3
- Project
- BFS
- two pointer
- level1
- Unity
- trie
- 3D RPG
- PrefixSum
- dirtyflag pattern
- LEVEL2
- solid 원칙
- Silver
- Modern C++
- SWEA
- Flyweight Pattern
Archives
- Today
- Total
Patrick's Devlog
[BOJ/C++] 게임을 만든 동준이(2847번) 본문
1. 개요
https://www.acmicpc.net/problem/2847
2847번: 게임을 만든 동준이
학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어
www.acmicpc.net
1-1. 설명
학교 수업을 들은 동준이는 스마트폰 게임을 제작하였다. 총 N개의 레벨이 있으며 각 레벨을 클리어시 점수가 주어진다. 이때, 점수는 레벨에 따라 높아져야 하나, 동준이의 실수로 쉬운 레벨이 어려운 레벨보다 점수를 많이 받는 경우를 만들었다. 이를 해결하기 위해 특정 레벨 점수를 감소시키려 한다. 각 레벨을 클리어할때 얻는 점수가 주어졌을때, 몇번 감소시키면 되는지 구하는 프로그램을 제작한다. 정답이 여러가지일 땐, 점수를 내리는 것을 최소한으로 하는 방법을 찾아야 한다.
1-2. 제한 사항
- 첫 줄에 레벨의 수 N이 주어지며, 1 이상 100 이하
- 다음 줄부터는 각 레벨을 클리어하면 얻는 점수가 주어지며, 점수는 20,000보다 작은 양의 정수
2. 구현
2-1. 풀이
단순하게 마지막 레벨부터 첫 스테이지까지 반복문을 돌려 이전의 점수를 변수에 저장하고 그보다 한단계 낮은 수로 바꿔주었다.
2-2. 코드
#include <iostream>
using namespace std;
int scores[100];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N, preNum, count, result = 0;
cin >> N;
for (int i = 0; i < N; i++) cin >> scores[i];
preNum = scores[N - 1];
for (int i = N - 1; i >= 0; i--) {
if (i == N - 1) continue;
else if (scores[i] >= preNum) {
count = scores[i] - preNum + 1;
result += count;
scores[i] -= count;
}
preNum = scores[i];
}
cout << result;
return 0;
}
'Algorithm > Algorithms Practice' 카테고리의 다른 글
[BOJ/C++] 문서 검색(1543번) (0) | 2022.11.04 |
---|---|
[BOJ/C++] 2xn 타일링 2(11727번) (0) | 2022.11.03 |
[BOJ/C++] 미로 탐색(2178번) (0) | 2022.10.31 |
[BOJ/C++] 예산(2512번) (0) | 2022.10.27 |
[BOJ/C++] 스타트와 링크(14889번) (0) | 2022.10.25 |