본문 바로가기
BOJ

[C] 백준 2851번: 슈퍼 마리오

by 야호호코코 2018. 7. 25.
반응형

 쉽지만 점수를 더하는 과정에서 조건을 정해줄 때 약간 헷갈릴 수도 있는 문제다. 나도 헷갈렸다.




정답 코드

#include <stdio.h>
#include <math.h>

int main() {

	int mush[10];
	int sum = 0;

	int i;

	for (i = 0; i < 10; i++) {
		scanf("%d", mush + i); 
	}
	

	for (i = 0; i < 10; i++) {

		if (abs(sum + mush[i] - 100) <= abs(sum - 100)) {
			sum += mush[i];
		}
		else {
			break;
		}

	}

	printf("%d", sum);

	return 0;

}


코드 설명


1. 10개의 버섯이 가지는 점수를 입력받는다.


2. 10개의 버섯으로 받을 수 있는 점수를 계산한다. 1번째 버섯부터 계산하는데, n번째 버섯을 먹었을 경우 100점과의 차이와 n-1번째까지 먹었을 경우(n이 1일 경우 안먹었을 경우) 100점과의 차이를 비교한다. 이 때 중요한 점은 절댓값으로 비교해야 된다. 만약 n번째 버섯을 먹었을 경우의 차이가 n-1번째까지 먹었을 경우보다 작거나 같으면 해당 점수를 더해준다.


3. 만약 해당 if문에서 거짓이 나오면 중간에 버섯을 먹는 것을 중단했으므로 더 이상 버섯을 먹을 수 없다. for문을 탈출한다.


4. 점수 총합을 출력한다.

반응형

'BOJ' 카테고리의 다른 글

[C] 백준 2869번: 달팽이는 올라가고 싶다  (5) 2018.07.25
[C] 백준 1769번: 3의 배수  (0) 2018.07.22
[C] 백준 1237번: 정ㅋ벅ㅋ  (0) 2018.07.22