๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Problem Solving/Algorithm, Tips

[SWEA] 2071. ํ‰๊ท ๊ฐ’ ๊ตฌํ•˜๊ธฐ - ์†Œ์ˆ˜์  N ๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ

by ํ–‰๋ฑ 2019. 12. 27.

ํŠน๋ณ„ํžˆ ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์•„๋‹Œ๋ฐ ๋ฐ˜์˜ฌ๋ฆผ ๊ด€๋ จ ํ•ด์„œ ์ •๋ฆฌํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ ๋Š”๋‹ค.

 

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

https://thrillfighter.tistory.com/29

http://www.cplusplus.com/reference/cmath/round/

๋Œ“๊ธ€