반응형
쉽지만 점수를 더하는 과정에서 조건을 정해줄 때 약간 헷갈릴 수도 있는 문제다. 나도 헷갈렸다.
정답 코드
#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 |