본문 바로가기

백준

2851 슈퍼마리오

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