※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2033번 문제인 장인은 반올림이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2033
2033번: 반올림
정수 N이 주어져 있을 때 이 수가 10보다 크면 일의 자리에서 반올림을 하고, 이 결과가 100보다 크면 다시 10의 자리에서 반올림을 하고, 또 이 수가 1000보다 크면 100의 자리에서 반올림을 하고.. (
www.acmicpc.net
문제에서 주어진 연산을 while문으로 구현해 문제를 해결하자.
구체적으로, k=1부터 시작해 N이 10^k보다 크다면, (N/10^(k-1))%10의 값을 살펴 그 값이 5보다 큰지 작은지에 따라 N의 값을 적절히 반올림처리하는 것을 반복해 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, tmp = 10;
cin >> N;
while (N > tmp) {
int val = (N / (tmp / 10)) % 10;
if (val < 5) N -= val * (tmp / 10);
else N += (10 - val) * (tmp / 10);
tmp *= 10;
}
cout << N;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 2346 // C++] 풍선 터뜨리기 (0) | 2023.02.14 |
---|---|
[BOJ 9771 // C++] Word Searching (0) | 2023.02.13 |
[BOJ 27451 // C++] 마키마씨가 정해주는 오늘 점심의 맛 (0) | 2023.02.13 |
[BOJ 9770 // C++] GCD (0) | 2023.02.13 |
[BOJ 9772 // C++] Quadrants (0) | 2023.02.13 |