100에 가장 가까운 값을 선택해야 한다.
내 생각에는 다 합해도 100에 못 미치는 경우와 중간에 100 이상의 값이 되는 경우 두가지로 나뉜다고 생각했다.
다 합쳐도 100에 못미치는 경우는 따로 변수를 둬서 체크한다.
중간에 100을 넘기는 경우는 미리 다음 값을 뭘 받는지 확인해서 더했을 경우 100을 넘는지 확인한다. 더했을 시 100을 넘긴다면 그때는 두 값 중 어느 값이 더 가까운지 확인한다.
#include <iostream>
int main() {
int sum = 0;
bool less100 = true;
for(int i = 0; i < 10; i++){
int num;
scanf("%d", &num);
if(sum + num >= 100){
if(100-sum >= num-100)
printf("%d", sum + num);
else
printf("%d", sum);
less100 = false;
break;
}
sum += num;
}
if(less100)
printf("%d", sum);
return 0;
}
음.. 잘 짰다고 생각했는데 틀렸다. 보니깐 만약 처음 값이 10000이면 그 때는 sum = 0을 출력하게 된다. 그래서 맨 처음 sum에 미리 값을 넣어야겠다고 생각했다.
#include <iostream>
int main() {
int sum;
scanf("%d", &sum);
bool less100 = true;
for(int i = 1; i < 10; i++){
int num;
scanf("%d", &num);
if(sum + num >= 100){
if(100-sum >= num-100)
printf("%d", sum + num);
else
printf("%d", sum);
less100 = false;
break;
}
sum += num;
}
if(less100)
printf("%d", sum);
return 0;
}
음.. 근데 또 틀렸다. 아마 로직 어딘가에 허점이 있다고 생각한다. 나중에 다시 풀어봐야지. 지금은 어디가 문제인지 모르겠다.
다시 초심으로 돌아가서 한 번 더 어디가 문제인지 살펴봤다. 아! 알고보니 조건을 하나 이상하게 설정했다. sum + num - 100을 해야 하는데 위를 보면 그냥 num - 100으로 비교했다.
#include <iostream>
int main() {
int sum;
scanf("%d", &sum);
bool less100 = true;
for(int i = 1; i < 10; i++){
int num;
scanf("%d", &num);
if(sum + num >= 100){
if(100-sum >= sum + num -100)
printf("%d", sum + num);
else
printf("%d", sum);
less100 = false;
break;
}
sum += num;
}
if(less100)
printf("%d", sum);
return 0;
}
이렇게 고쳤고 맞췄음~~
'백준' 카테고리의 다른 글
2578 빙고 (0) | 2019.10.26 |
---|---|
1834 나머지와 몫이 같은 수 (0) | 2019.10.25 |
2460 지능형기자 2 (0) | 2019.10.25 |
11365 !밀비급일 (0) | 2019.10.25 |
2864 5와 6의 차이 (0) | 2019.10.25 |