반응형
알고리즘 분류 : 구현
입력으로 N이 주어질 때, 1부터 N까지 수를 이어 붙여서 나온 수의 길이를 구하는 문제다.
- 자릿수로 나눠서 생각하면 구현이 쉽다.
- N이 주어졌을 때, 1의 자리가 있는 수는 1부터 N까지이다. 따라서 1의 자리가 있는 수는 (N-1+1)이다.
- 10의 자리가 있는 수는 10부터 N까지이다. 이를 구하면, (N-10+1) 이다.
- 100의 자리가 있는 수는 100부터 N까지이다. 이를 구하면, (N-100+1) 이다.
- 위의 과정을 N의 자릿수 만큼 반복한다.
C++ 소스코드
#include <cstdio> int main() { int n; scanf("%d", &n); int ans = 0, i = 1; while (i <= n) { ans += (n-i+1); i *= 10; } printf("%d\n", ans); return 0; }
Python 3 소스코드
n = int(input()) ans, i = 0, 1 while i <= n: ans += (n-i+1) i *= 10 print(ans)
참고
- 백준 온라인 저지 : BOJ 1748
반응형