반응형
문제 출처 :
https://www.acmicpc.net/problem/2033
알고리즘 분석 :
문제 해결에 필요한 사항
1. 구현
간단하게 구현이 가능한 문제이다.
while문 내부 구조식을 보면 우선 확인해야 하는게 문제에서도 주어지듯이 n이 10^pos보다 큰지 알아야 한다.
해당한다면 while문으로 그렇지 않다면 출력을 하면 된다.
이제 해당 할 때는 만약 345일때 5가 반올림 되는지 여부를 확인하는 과정이다.
5의 반올림 여부를 볼 때 현재 pos는 10의자리인 4를 보고 있으니 5*pos(10, pos - 1)을 해준다.
이렇게 확인을 하고 반올림이 된다면 다음 자릿수에 +1을 해주고 반올림 자체가 현재 자릿수를 0으로 만드는 것이니
그 작업을 n -= n % ~로 해준다.
소스 코드 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <iostream> #include <cstdio> #include <cmath> using namespace std; int main() { int n; scanf("%d", &n); int pos = 1; // 현재 수가 10^pos승보다 큰지 확인 while (n > pow(10, pos)) { // 반올림이 되는지 여부 확인 if (n % (int)pow(10, pos) >= 5 * pow(10, pos - 1)) n += pow(10, pos); // 다음 자릿수에 + 1 n -= n % (int)pow(10, pos); // 반올림 안하니 현재 자릿수만 0으로 pos++; } cout << n; return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[2110번] 공유기 설치 (0) | 2017.06.17 |
---|---|
[2204번] 도비의 난독증 테스트 (0) | 2017.06.13 |
[1849번] 순열 (0) | 2017.06.07 |
[3020번] 개똥벌레 (0) | 2017.06.06 |
[14612번] 김식당 (0) | 2017.06.06 |