๐ ๋ฌธ์
https://www.acmicpc.net/problem/1748
๐ ๋์ ํ์ด
๊ทธ๋ฅ N์ ๋ ฅ์ ๋ฐ์์, 1๋ถํฐ N๊น์ง ๋จ์ํ๊ฒ for๋ฌธ์ผ๋ก ์ฆ๊ฐ์์ผ์ฃผ๋ฉด์ ํด๋น ๊ธ์๊ฐ ๋ช๊ธ์์ธ์ง ํ๋จํด์ answer๋ก ๋ํด์ฃผ๋ ค๊ณ ํ๋ค. ๋๊ตฌ๋ ์๊ฐํ๋,, ๊ทธ๋ฐ 1์ฐจ์์ ์ธ ๋ฐฉ์์ผ๋ก
๊ทธ๋ฐ๋ฐ, ํด๋น ๋ฌธ์ ์์ ์ฃผ์ด์ง ์๊ฐ์ 0.15์ด ์๊ณ , ์ต๋๋ก ์ฃผ์ด์ง ์ ์๋ N์ 1์ต์ด์๋ค. ๋ฐฑ์ค์์ ํ ์ฐ์ฐ์ด ๋์๊ฐ๋ 1์ต๋ฒ๋์๊ฐ๋๋ฐ 1์ด๊ฐ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์, ์ด๋ ๊ฒ ํ๋ฉด ๋ฌด์กฐ๊ฑด ์๊ฐ์ด๊ณผ๊ฐ ๋๊ฒ ๋ค๋ ํ๋จ์ด ์ฐ๋ค.
๊ทธ๋ผ ์ด๋ป๊ฒ ์ค์ผ ์ ์์๊น?
์์ ์ ํ์ด๋ณธ ๋ฌธ์ ๋ค์ ์ํ๋ฉด, ์๋ฆฟ์๋ฅผ ํ๋จํ ๋ " % 10" ์ ํ์ฌ ํ๋จํ๋ค. ์๋ฅผ๋ค์ด, 1234์ ๊ฐ ์๋ฆฟ์์ ๋ํ ์ถ์ถ์ด ํ์ํ๋ฉด, %10 ํด์ ๋๋จธ์ง 4, %100 ํ๋ฉด ๋๋จธ์ง 34,, ์ด๋ฐ์์ผ๋ก! ๊ทธ๋์ 10์ ๋ฐฐ์๋ฅผ ์ด์ฉํ๋ฉด ๋ญ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ํ๋จํ๋ค.
์์ 2๋ก ์์๋ฅผ ๋ค๋ฉด, 15๋ฅผ ์
๋ ฅ๋ฐ์ผ๋ฉด, 1๋ถํฐ 15๊น์ง์ ์์ ๋ชจ๋ ์๋ฆฟ์๋ฅผ ๋ํด์ผํ๋ค.
1๋ถํฐ 15๊น์ง๋ ๋ชจ๋ 1์ ์๋ฆฌ์๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , 10๋ถํฐ 15๊น์ง๋ง ์ญ์์๋ฆฌ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด๊ฒ์ ์ด๋ป๊ฒ ๊ณต์ํ ํ ์ ์์๊น
1๋ถํฐ 15๊น์ง ์ผ์์๋ฆฌ ๊ฐฏ์ = 15๊ฐ
1๋ถํฐ 15๊น์ง ์ญ์์๋ฆฌ ๊ฐฏ์ = 6๊ฐ
15 - 1 + 1 = 15
15 - 10 + 1 = 6
์ด 21๊ฐ
์ด๋ ๊ฒ ๊ตฌํ ์ ์๋ค.
1๋ถํฐ 15๊น์ง ํ์๋ฆฌ์์ธ 9๊ฐ๋ฅผ ๋นผ์ฃผ๋ฉด, ์ญ์์๋ฆฌ๋ฅผ ๊ฐ์ง ์์ ๊ฐฏ์์ธ 6์ด ๋์ถ๋๋ค.
๐ ์ ๋ต์ฝ๋
let N = Int(readLine()!)!
var i = 1
var answer = 0
while i <= N {
answer += (N-i) + 1
i *= 10
}
print(answer)