※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts