ํน๋ณํ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋๋ฐ ๋ฐ์ฌ๋ฆผ ๊ด๋ จ ํด์ ์ ๋ฆฌํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ ๋๋ค.
C++์ <cmath>์๋ ์ด๋ฏธ ceil(์ฌ๋ฆผ), floor(๋ด๋ฆผ) ํจ์ ๋ฟ๋ง ์๋๋ผ
round ํจ์๊ฐ ์์ง๋ง ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ฅผ ๋ฆฌํดํด์ค ๋ฟ ์ ํํ ์์์ N ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ์ ํ ๊ฒฐ๊ณผ๊ฐ์ ์ป์ ์ ์๋ค.
cf) ceil, floor, round ํจ์๋ ๋ชจ๋ double, float, long double์ ๋ํ์ฌ ์ค๋ฒ๋ก๋ฉ ๋์ด์๋ค.
์์์ N ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ๊ธฐ ์ํด์๋
๊ณ ๋ ค ๋์์ธ ์์์ N ๋ฒ์งธ ์๋ฆฌ ์๊ฐ 5๋ณด๋ค ์์์ง ํน์ ํฌ๊ฑฐ๋ ๊ฐ์์ง๋ง ํ์ธํ๋ฉด ๋๋ค.
1) ๋ฐ๋ผ์ pow(10, N-1)์ ๊ณฑํด ์์์ N ๋ฒ์งธ ์๋ฆฌ ์๊ฐ ์์์ ์ฒซ ๋ฒ์งธ ์๋ฆฌ ์๊ฐ ๋๋๋ก ํด์ค๋ค.
3.4927์ ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ํ๊ธฐ ์ํด์
3.4927 * 10 = 34.927
2) 0.5f๋ฅผ ๋ํ๊ณ ์์๋ถ๋ฅผ ๋ฒ๋ฆฐ๋ค.
0.5f๋ฅผ ๋ํ๊ธฐ ์ ๊ณผ ํ์ ์ ์๋ถ๊ฐ ๋์ผํ๋ค๋ฉด ์์๋ถ๊ฐ 0.5๋ณด๋ค ์๋ค๋ ์๋ฏธ์ด๋ฏ๋ก ๊ฒฐ๊ตญ ๋ด๋ฆผํ ๊ฒ์ด ๋๊ณ
์ ์๋ถ๊ฐ 1 ์ปค์ก๋ค๋ฉด ์์๋ถ๊ฐ 0.5 ์ด์์ด๋ผ๋ ์๋ฏธ์ด๋ฏ๋ก ๊ฒฐ๊ตญ ์ฌ๋ฆผํ ๊ฒ์ด ๋๋ค.
34.927 + 0.5 = 35.427
35.427 => 35
3) ๋ค์ ์์์ ์ ์๋๋๋ก ๋๋๋ฆฌ๊ธฐ ์ํ์ฌ pow(10, N-1)๋ก ๋๋๋ค.
35 / 10 = 3.5
์ฆ ๊ณ ๋ ค ๋์์ธ ์์์ ๋ช ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ์ ํ๋ ๊ทธ ์๋ฅผ ์์์ ์ฒซ ๋ฒ์งธ ์๋ฆฌ๋ก ์ฎ๊ฒจ ํ๋จํ๊ฒ ๋ค๋ ๋ป์ด๋ค.
์์ค์ฝ๋๋ก ์ ๋ฆฌํด๋ณด๋ฉด
double myRound(double x, int n){
return (int)(x * pow(10, n-1) + 0.5) / pow(10, n-1);
}
cf) 2) ๊ณผ์ ์์ ๋ด๋ฆผํ ๋ ์ฌ๊ธฐ์๋ int๋ก ์บ์คํ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๋๋ฐ floor ํจ์๋ฅผ ์จ๋ ์๊ด ์์ ๊ฒ์ด๋ค.
cf) pow ํจ์๋ cmath ํจ์๋ค.
References
https://shaeod.tistory.com/384
'Problem Solving > Algorithm, Tips' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ต๋ ์ฐ์ ๋ถ๋ถ ์์ด์ ํฉ (0) | 2020.06.23 |
---|---|
Kruskal / Prim Algorithm (ํฌ๋ฃจ์ค์นผ / ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ) (0) | 2020.06.02 |
Dijkstra Algorithm (๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ) (0) | 2020.06.02 |
๋ฐฑ์ค ์ธํ ๋ฐ๋ ๋ฌธ์ ์๋ฆฌ์ฆ (c++) (0) | 2020.05.19 |
cpp์์ 2์ง์๋ก ์ถ๋ ฅํ๋ ๋ฒ (bitset) (0) | 2020.05.06 |
๋๊ธ