1. ๋ฌธ์ ์ค๋ช
๋ฌธ์ URL : https://www.acmicpc.net/problem/1748
์ด ๋ฌธ์ ๋ 1๋ถํฐ N๊น์ง์ ๋ชจ๋ ์ซ์๋ฅผ ์ด์ด์ ์ผ์ ๋, ๊ทธ ์ซ์์ ์ด ์๋ฆฟ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, N์ด 12์ผ ๊ฒฝ์ฐ, 1๋ถํฐ 12๊น์ง์ ์ซ์๋ฅผ ์ด์ด์ ์ฐ๋ฉด “123456789101112”๊ฐ ๋๋ฉฐ, ์ด๋ ์ด ์๋ฆฟ์๋ 15๊ฐ ๋ฉ๋๋ค.
2. ์ ๋ต์ฝ๋
import sys
input = sys.stdin.readline
# ์
๋ ฅ์ ๋ฐ์์ ์ ์ํ์ผ๋ก ๋ณํ
N = int(input())
# ์๋ฆฌ์(i)์ ๊ฒฐ๊ณผ๊ฐ(ans)๋ฅผ ์ด๊ธฐํ
i = 1
ans = 0
while True:
# ํ์ฌ ์๋ฆฌ์์์์ ๋ง์ง๋ง ์(end)๋ฅผ ๊ณ์ฐ
end = int('9' * i)
# ํ์ฌ ์๋ฆฌ์์์์ ์์ ์(start)๋ฅผ ๊ณ์ฐ
start = 1 * 10 ** (i - 1)
# ์
๋ ฅ๋ฐ์ ์ N์ด ํ์ฌ ์๋ฆฌ์์ ๋ง์ง๋ง ์(end)๋ณด๋ค ํฐ ๊ฒฝ์ฐ
if N > end:
# ํ์ฌ ์๋ฆฌ์์ ๋ชจ๋ ์๋ค์ ์๋ฆฟ์๋ฅผ ๋ํจ
ans += (end - start + 1) * i
# ์๋ฆฌ์๋ฅผ ์ฆ๊ฐ์ํด
i += 1
else:
# N์ด ํ์ฌ ์๋ฆฌ์์ ๋ฒ์ ์์ ์๋ ๊ฒฝ์ฐ
# N๊น์ง์ ์๋ค์ ์๋ฆฟ์๋ฅผ ๋ํ๊ณ ๋ฃจํ๋ฅผ ์ข
๋ฃ
ans += (N - start + 1) * i
break
# ์ต์ข
๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ
print(ans)
3. ์ฝ๋์ค๋ช
1) ๋ณ์ ์ด๊ธฐํ
์๋ฆฌ์๋ฅผ ๋ํ๋ด๋ ๋ณ์ i์ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ ๋ณ์ ans๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
2) ์๋ฆฌ์ ๊ณ์ฐ ๋ฐ๋ณต๋ฌธ
ํ์ฌ ์๋ฆฌ์์ ๋ง์ง๋ง ์ซ์ end์ ์์ ์ซ์ start๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, i๊ฐ 2๋ผ๋ฉด start๋ 10์ด๊ณ , end๋ 99๊ฐ ๋ฉ๋๋ค.
3) ํ์ฌ ์๋ฆฌ์์ ์๋ฆฟ์ ํฉ ๊ณ์ฐ
์ ๋ ฅ๋ฐ์ ์ N์ด ํ์ฌ ์๋ฆฌ์์ ๋ง์ง๋ง ์(end)๋ณด๋ค ํฐ ๊ฒฝ์ฐ, ํด๋น ์๋ฆฌ์์ ๋ชจ๋ ์๋ค์ ์๋ฆฟ์๋ฅผ ๋ํ ํ ๋ค์ ์๋ฆฌ์๋ก ๋์ด๊ฐ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, N๊น์ง์ ์๋ค์ ์๋ฆฟ์๋ฅผ ๋ํ๊ณ ๋ฃจํ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
4) ์ต์ข ๊ฒฐ๊ณผ ์ถ๋ ฅ
๊ณ์ฐ๋ ์ด ์๋ฆฟ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
4. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python_Easy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 2015[์๋ค์ ํฉ 4] (0) | 2024.08.24 |
---|---|
๋ฐฑ์ค 2178[๋ฏธ๋ก ํ์] (0) | 2024.08.18 |
๋ฐฑ์ค 1343[ํด๋ฆฌ์ค๋ฏธ๋ ธ] (0) | 2024.08.14 |
๋ฐฑ์ค 2417[์ ์ ์ ๊ณฑ๊ทผ] (0) | 2024.08.09 |