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