본문 바로가기

백준

2033 반올림

 

음.. 엄.. 이렇게 푸는게 맞다고 생각했는데 틀렸다.

0부터 9까지는 반올림 안 하니깐 그대로 출력되고 10이상은 반올림을 해야하고..

최대가 99,999,999라 반올림하면 100,000,000라 2,100,000,000보다 작아서 터지지도 않고.. 실제로 저 값 넣어보니 100,000,000이 나왔다. 

 

음.. 모르겠다. 

 

 

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int n;
    scanf("%d", &n);
    int len = to_string(n).length();
    
    for(int i = 1; i < len; i++){
        int tmp = pow(10, i);
        if(n > tmp){
            if(n%tmp >= 5*tmp/10){
                n = n/tmp*tmp;
                n += tmp;
            }
        }
    }
    printf("%d", n);
}

정답률 낮은 이유가 있었다


ㅋㅋㅋ 반올림이 내가 아는 그 반올림이었다. 난 또 백준에서 새로 정의해준 반올림 저대로 하는 줄 알았음ㅋㅋ 정답률 낮은 건 나같은 사람들이 많기 때문일 것이다. 

 

+) 정수 연산에서 실수 계산용 함수는 안 쓰는게 좋다. 그냥 10씩 곱해나가자

 

 

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int n;
    scanf("%d", &n);
    int len = to_string(n).length();
    
    int ten = 10;
    for(int i = 1; i < len; i++){
        if(n > ten){
            if(n%ten >= 5*ten/10){
                n = n/ten*ten;
                n += ten;
            }
            else {
                n = n/ten*ten;
            }
        }
        ten *= 10;
    }
    printf("%d", n);
}

내림도 구현해줬다

 

 

'백준' 카테고리의 다른 글

10989 수 정렬하기 3  (0) 2019.11.01
1252 이진수 덧셈  (0) 2019.10.27
9455 박스  (0) 2019.10.27
10163 색종이  (0) 2019.10.27
1408 24  (0) 2019.10.27