Day 6. [BOJ 2851] 슈퍼 마리오

박정빈·2022년 11월 3일
0

0. 오늘의 사진


귀요미 마리오

1. 문제

슈퍼 마리오 앞에 10개의 버섯이 일렬로 놓여져 있다. 이 버섯을 먹으면 점수를 받는다. 슈퍼 마리오는 버섯을 처음부터 나온 순서대로 집으려고 한다. 하지만, 모든 버섯을 집을 필요는 없고 중간에 중단할 수 있다. 중간에 버섯을 먹는 것을 중단했다면, 그 이후에 나온 버섯은 모두 먹을 수 없다. 따라서 첫 버섯을 먹지 않았다면, 그 이후 버섯도 모두 먹을 수 없다. 마리오는 받은 점수의 합을 최대한 100에 가깝게 만들려고 한다.
버섯의 점수가 주어졌을 때, 마리오가 받는 점수를 출력하는 프로그램을 작성하시오. 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다.

2. 문제 해결 방법

  1. 배열을 선언하고 for문을 통해 10개의 버섯의 점수를 입력받는다.
  2. for문을 통해 10개의 버섯을 먹으면 누적 점수를 합하는 것을 반복한다.
  3. for문 안에 if문을 통해 누적점수가 100이면 berak를 통해 for문을 빠져나간다.
  4. 누적점수가 100 이상이 된 경우에는 그 직전의 점수와 비교하여 큰 점수가 작은 점수보다 100과의 차이가 같거나 작은 경우 큰 점수를 출력해주고 반대의 경우는 작은 점수를 출력해준다.

3. 소스코드

#include <stdio.h>

int main() {
	int score = 0;
	int arr[10];
    
	for (int i = 0; i < 10; i++) {
		scanf("%d", &arr[i]);
	}
	for (int i = 0; i < 10; i++) {
		if (score == 100){
			break;
		}
		else if (score + arr[i] > 100) {
			if (100 - score >= score + arr[i] - 100) {
				score += arr[i];
			}
			break;
		}
		score += arr[i];
	}
	printf("%d", score);
	
	return 0;
}

4. 회고

배열의 인덱스는 0부터 임을 잊지말자^^

profile
바른콩

0개의 댓글